Arduino digitala ingångar

Övriga diskussioner relaterade till komponenter. Exempelvis radiorör, A/D, kontaktdon eller sensorer.
fredrikdan73
Inlägg: 8
Blev medlem: 18 maj 2011, 20:58:43

Arduino digitala ingångar

Inlägg 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:
danei
EF Sponsor
Inlägg: 27414
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Re: Arduino digitala ingångar

Inlägg av danei »

Ett skiftregister är nog det som passar bäst på din beskrivning.
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Arduino digitala ingångar

Inlägg 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.
Användarvisningsbild
LHelge
Inlägg: 1772
Blev medlem: 2 september 2007, 18:25:31
Ort: Östergötland
Kontakt:

Re: Arduino digitala ingångar

Inlägg 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
}
nifelheim
Den första
Inlägg: 2488
Blev medlem: 27 mars 2008, 22:31:16
Ort: stockholm

Re: Arduino digitala ingångar

Inlägg av nifelheim »

olika motstånd för varje switch kopplat till en analog ingång?
Skriv svar