Go Down

Topic: Hur ska jag avgöra vilken av två sensorer som triggas först? (Read 3 times) previous topic - next topic

apocalyps

Hej!

Jag håller på med ett projekt där jag vill kunna avgöra vilken av två sensorer som triggas först. I nuläget har jag kopplat två enkla strömbrytare till en Arduino Uno som kontrollera varsin LED. När jag trycker på den ena strömbrytaren så tänds den ena LED:en och trycker jag på den andra strömbrytaren så släcks den första LED:en och tänder den andra. Jag vill att när en av strömbrytarna sluts så ska dess LED börja lysa och sedan ska den fortsätta att lysa enda till dess att jag nollställer... Dvs - då kan jag avgöra vilken av strömbrytarna som har blivit trycks på först.

Är det någon som vet vad jag behöver lägga till i min kod?

Mvh Martin

Code: [Select]
void setup() {                
 
 pinMode(13, OUTPUT);
 pinMode(12, OUTPUT);
 
 pinMode(2, INPUT);
 pinMode(4, INPUT);
}

void loop() {
 if (digitalRead(2) == LOW) {
   digitalWrite(13, HIGH);
   digitalWrite(12, LOW);  
 }
 if (digitalRead(4) == LOW) {
   digitalWrite(12, HIGH);
   digitalWrite(13, LOW);  
 }
}

Msquare

Du vil have en tilstands skift i stil med
A åben : B åben -> ingen LED
Og så ENTEN
A lukket : B åben -> LED A lyser
og fra det tidspunkt A lyser uanset hvad du gør med B
ELLER
A Åben : B lukket -> LED B lyser
og fra det tidspunkt lyser B uanset hvad du gør med A
--
Som du ser har jeg nu mere nøjagtigt beskrevet hvad der skal ske. Du kan endnu mere nøjagtigt beskrive det ... og når det er meget meget nøjagtigt og detaljret, så er programmet skrevet. Så skal et bare skrives i C-syntax.
Tricket du har her, at du nok skal have en variabel der siger LED-A-lys-tilstand (true/false) og når den er true så checker du kun på om "nollställ" - du skal ikke kigge på knapperne mere.
"Nolställer" - du har ikke sagt hvad det er: Begge åben igen, eller RESET, eller en 3. knap?

apocalyps

Hej Msquare,

Tack, din beskrivning stämmer precis. När jag menar "nollställ" så menar jag RESET. Jag är en nybörjare på programmering så jag vet inte riktigt hur en sådan programkod ser ut, men jag ska kolla om jag kan få till något som fungerar. Om du/någon har något förslag så får ni gärna tipsa hur jag kan förändra min kod.

Jag postar en bild över hur jag har kopplat också (på bilden syns bara en strömbrytare och en LED, men den andra är inkopplad exakt likadant.

//Martin

Msquare

Tips #2 (siden den første ikke var tydlig nok :) )
Code: [Select]

boolean IngenLED = true ;
  :
if ( IngenLED )  // har endnu ikke valgt LED
  {
  kod der tester. Hvis en er trykt, tænd den LED og
    IngenLED = false ;
  }


apocalyps

Tack för hjälpen,

Tyvärr är jag fortfarande helt förvirrad - jag har försökt på alla möjliga vi men jag får inte till det :-(
Men jag får nog läsa på lite om hur man ska programmera...vilket enkelt kan ses på följande kod

Code: [Select]
//int IngenLED = 12;
//int LED = 13;

void setup() {               
 
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
 
  pinMode(2, INPUT);
  pinMode(4, INPUT);

}

void loop() {

  static boolean IngenLED = true;
   
//static boolean LED = false;
  //if (IngenLED) {
   //digitalRead(2) == LOW;
   // digitalWrite(13, HIGH);
   //IngenLED = false;
  if (IngenLED) {
    digitalRead(4) == LOW;
     digitalWrite(12, HIGH);
  IngenLED = false;
  //if (digitalRead(2) == LOW && IngenLED == true) {
//digitalWrite(13, HIGH);
  //if (digitalRead(4) == LOW && IngenLED == false) {
//digitalWrite(12, HIGH); // 13 green LED, 12 red LED   
//if ( IngenLED )  // har endnu ikke valgt LED
// {
  //kod der tester. Hvis en er trykt, tænd den LED og
    //IngenLED = false;
  }
  }

//}
   // } 

Go Up