Gå til innhold

[Løst] Styring av LED med bryter og Serial port - Help trengs.


Anbefalte innlegg

Jeg har klart å lage 2 koder.

Nr 1 - Styring av led av/på med samme knapp

og

Nr 2 - Styring av led av/på ved bruk av serial port


Det jeg trenger hjelp til nå er å sette disse to sammen, men andre ord kunne styre led med både bryter og kode via serial port.

Noen som kan hjelpe meg der?



Kode for led av og på med samme knapp:


const int LED = 2;

const int LED2 = 3;

const int BUTTON = 22;

const int BUTTONB = 24;

boolean lastButton = LOW;

boolean lastButtonb = LOW;

boolean currentButton = LOW;

boolean currentButtonb = LOW;

boolean ledOn = false;

boolean ledOnb = false;



void setup()

{

Serial.begin(9600);

pinMode (LED, OUTPUT);

pinMode (LED2, OUTPUT);

pinMode (BUTTON, INPUT);

pinMode (BUTTONB, INPUT);

}


boolean debounce(boolean last)

{

boolean current = digitalRead(BUTTON);

if (last != current)

{

delay(5);

current = digitalRead(BUTTON);

}

return current;

}


boolean debounceb(boolean lastb)

{

boolean currentb = digitalRead(BUTTONB);

if (lastb != currentb)

{

delay(5);

currentb = digitalRead(BUTTONB);

}

return currentb;

}


void loop()

{

currentButton = debounce(lastButton);

if (lastButton == LOW && currentButton == HIGH)

{

ledOn = !ledOn;

}

lastButton = currentButton;


digitalWrite(LED, ledOn);


currentButtonb = debounceb(lastButtonb);

if (lastButtonb == LOW && currentButtonb == HIGH)

{

ledOnb = !ledOnb;

}

lastButtonb = currentButtonb;


digitalWrite(LED2, ledOnb);

}



Kode for styring av led via serial port:


int LED= 2;

int LED2 = 3;

int Data = 0;


void setup()

{

pinMode(LED, OUTPUT);

pinMode(LED2, OUTPUT);

Serial.begin(9600);

digitalWrite(LED, LOW);

digitalWrite(LED2, LOW);


}



void loop()

{

Data=Serial.read();


if (Data==0x31)

{

digitalWrite(LED,HIGH);

delay(10);

Serial.println("LED pa");

}

else if (Data==0x32)

{

digitalWrite(LED, LOW);

delay(10);

Serial.println("LED av");

}


if (Data==0x33)

{

digitalWrite(LED2,HIGH);

delay(10);

Serial.println("LED2 pa");

}

else if (Data==0x34)

{

digitalWrite(LED2, LOW);

delay(10);

Serial.println("LED2 av");

}


}

Lenke til kommentar
Videoannonse
Annonse

Da har jeg kommet litt lengre. Fikk til styring via pc og knapper samtidig, eneste som mangler nå er å hindre systemet til å resette sine instillinger når serial com blir linket inn.

 

lysstyringskjemaw300h364.jpg

Øverste knapp slår på/av rød.

Nederste knapp slår på/av grønn.

 

CODE:

 

Tastatur kode til Arduino,

1 = LED 1 på

2 = LED 1 av

3 = LED 2 på

4 = LED 2 av

const int LED1 = 2;
const int LED2 = 3;
const int BUTTONA = 22;
const int BUTTONB = 24;
boolean lastButtonA = LOW;
boolean lastButtonB = LOW;
boolean currentButtonA = LOW;
boolean currentButtonB = LOW;
boolean ledOna = false;
boolean ledOnb = false;
int Data = 0;


void setup()
{
  Serial.begin(9600);
  pinMode (LED1, OUTPUT);
  pinMode (LED2, OUTPUT);
  pinMode (BUTTONA, INPUT);
  pinMode (BUTTONB, INPUT);
}


boolean debounce(boolean last)
{
  boolean currenta = digitalRead(BUTTONA);
   if (last != currenta)
   {
     delay(5);
     currenta = digitalRead(BUTTONA);
   }
    return currenta;
}

boolean debounceb(boolean lastb)
{
  boolean currentb = digitalRead(BUTTONB);
   if (lastb != currentb)
   {
     delay(5);
     currentb = digitalRead(BUTTONB);
   }
    return currentb;
}


void loop()
{
  Serial.println("\nLED 1\tLED 2");
  Serial.print(ledOna);
  Serial.print("\t");
  Serial.println(ledOnb);
  
  Data=Serial.read();            
  
  if (Data==0x31)                
  {
    ledOna = true;
  }
   else if (Data==0x32)         
   {
     ledOna = false;
   }
  
  if (Data==0x33)                
  {
    ledOnb = true;
  }
   else if (Data==0x34)         
   {
     ledOnb = false;
   }
  
  currentButtonA = debounce(lastButtonA);
   if (lastButtonA == LOW && currentButtonA == HIGH)
   {
     ledOna = !ledOna;
   }
   lastButtonA = currentButtonA;
   
   digitalWrite(LED1, ledOna);
   
   currentButtonB = debounceb(lastButtonB);
   if (lastButtonB == LOW && currentButtonB == HIGH)
   {
     ledOnb = !ledOnb;
   }
   lastButtonB = currentButtonB;
   
   digitalWrite(LED2, ledOnb);

} 
Endret av Kimlorentz
Lenke til kommentar
  • 2 uker senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...