Sida 1 av 1

Arduino digitala ingångar

Postat: 4 oktober 2012, 23:28:04
av fredrikdan73
:shock: Hej,,

Jag behöver hjälp med vad jag ska använda för ic krets?!

Jag har ett antal (tex 8st) microswitchar för olika funktioner..

Nu vill jag omvandla signalerna (+5V alt 3,3V) från varje knapp till en unik digital signal... hmm

så att jag kan skicka all data på en kabel... och in på en ingång..

Jag arbetar med Arduion,, och vill hålla nere antalet inputs.. då jag inte har allt för många digitala ingångar på den.. :doubt:

I mina drömmar finns en sån krets.. som har typ 8a ingångar,, och en digital utgång...
som sen skickar ut olika unika digitala signaler beroende på vilken,, eller vilka knappar som är intryckta.. :humm:

Re: Arduino digitala ingångar

Postat: 4 oktober 2012, 23:32:01
av danei
Ett skiftregister är nog det som passar bäst på din beskrivning.

Re: Arduino digitala ingångar

Postat: 4 oktober 2012, 23:36:27
av sodjan
Maxim har en del skojiga kretsar, det blir dock lite programmering...
T.ex:
http://www.maximintegrated.com/datashee ... vp/id/3008
"I²C Port Expander with Eight Inputs and Maskable Transition Detection"

Eller så programmerar du upp en extra AVR med önskad funktion som "frontend"
till din Arduino.

Re: Arduino digitala ingångar

Postat: 4 oktober 2012, 23:42:22
av LHelge
En 74xx165 borde fungera till detta, då behöver du två digital utgångar och en ingång för att läsa av 8 brytare.

t ex.
http://www.electrokit.com/74hc165n-dip.43062

Det är ett skiftregister med parallell ingång och seriel utgång.

Att läsa alla ingångar borde se ut ungefär såhär:

Kod: Markera allt

#define CLOCK
#define LATCH
#define SERIAL

void setup() {
  pinMode(CLOCK, OUTPUT);
  pinMode(LATCH, OUTPUT);
  pinMode(SERIAL, INPUT);
  
  digitalWrite(CLOCK, LOW);
  digitalWrite(LATCH, LOW);
}

void loop() {
  int switches[8];
  
  // Latch data into register
  digitalWrite(LATCH, HIGH);
  delayMicroseconds(50);
  digitalWrite(LATCH, LOW);
  delayMicroseconds(50);
  
  for(int i = 0; i < 8; i++) {
    switches[i] = digitalRead(SERIAL);
    
    // Clock next bit to serial
    digitalWrite(CLOCK, HIGH);
    delayMicroseconds(50);
    digitalWrite(CLOCK, LOW);
    delayMicroseconds(50);
  }
  
  // Do something with switches
}

Re: Arduino digitala ingångar

Postat: 5 oktober 2012, 00:55:32
av nifelheim
olika motstånd för varje switch kopplat till en analog ingång?