Hallo allemaal, ik ben voor een project bezig om een knipperlicht te maken. Hij bestaat uit 4 verschillende led's (zie schakeling).
Hierin is LED_links T1, LED_rechts is T2, R is LED_achter en RX1 en RX2 zijn aangesloten op LED_zij.
Ik heb nu een uitgebreide code geschreven die werkt, maar nog zonder knipperende LED's. Dus wat ik eigenlijk graag wil is ervoor zorgen dat wanneer LED_links of LED_rechts "HIGH" is deze zal knipperen in plaats van alleen aan staat. Ik heb "Blinkin without Delay" al een aantal keer bestudeerd, maar ik kom er niet helemaal uit hoe ik dat in mijn code kan verwerken zodat dat het enige is wat verandert.
Ik zou het waarderen als ik hier advies in zou kunnen krijgen.
Groeten HC
Mijn sketch:
So I have managed to produce a code that works for the system, but without the timer and the blinking:
[code]//LED's
const int LED_links = 12; // T1 in image
const int LED_rechts = 11; // T2 in image
const int LED_achter = 10; // R in image
const int LED_zij = 9;
// Buttons
const int button_aan = 2;
const int button_links = 3;
const int button_rechts = 4;
//Buttonstate waarden
int buttonstate_aan;
int buttonstate_links;
int buttonstate_rechts;
int lastbuttonstate_aan;
int lastbuttonstate_links;
int lastbuttonstate_rechts;
// LED states
int LED_links_state = LOW;
int LED_rechts_state = LOW;
int LED_achter_state = LOW;
int LED_zij_state = LOW;
void setup() {
Serial.begin(9600);
pinMode(button_aan, INPUT);
pinMode(LED_links, OUTPUT);
pinMode(button_links, INPUT);
pinMode(LED_rechts, OUTPUT);
pinMode(button_rechts, INPUT);
pinMode(LED_achter, OUTPUT);
pinMode(LED_zij, OUTPUT);
digitalWrite(button_links, LOW);
digitalWrite(button_rechts, LOW);
}
void loop(){
buttonstate_aan = digitalRead(button_aan);
buttonstate_links = digitalRead(button_links);
buttonstate_rechts = digitalRead(button_rechts);
if (buttonstate_links != lastbuttonstate_links && buttonstate_links == HIGH){
functie_links();
}
if (buttonstate_rechts != lastbuttonstate_rechts && buttonstate_rechts == HIGH){
functie_rechts();
}
if (buttonstate_aan != lastbuttonstate_aan && buttonstate_aan == HIGH){
functie_aan();
}
lastbuttonstate_aan = buttonstate_aan;
lastbuttonstate_links = buttonstate_links;
lastbuttonstate_rechts = buttonstate_rechts;
}
void functie_links(){
if (LED_zij_state == HIGH){
digitalWrite(LED_zij, LOW);
LED_zij_state == LOW;
}
if(LED_rechts_state == HIGH){
digitalWrite(LED_rechts, LOW);
lastbuttonstate_rechts = LOW;
}
if(LED_links_state == LOW){
digitalWrite(LED_links,HIGH);
LED_links_state = HIGH;
}
else
{
digitalWrite(LED_links,LOW);
LED_links_state = LOW;
if (LED_achter_state == HIGH){
digitalWrite(LED_zij,HIGH);
LED_zij_state = HIGH;
}
else {
digitalWrite (LED_rechts,LOW);
LED_rechts_state = LOW;
}
}
}
void functie_rechts(){
if (LED_zij_state == HIGH){
digitalWrite(LED_zij, LOW);
LED_zij_state == LOW;
}
if(LED_links_state == HIGH){
digitalWrite(LED_links, LOW);
lastbuttonstate_links = LOW;
}
if(LED_rechts_state == LOW){
digitalWrite(LED_rechts,HIGH);
LED_rechts_state = HIGH;
}
else {
digitalWrite(LED_rechts,LOW);
LED_rechts_state = LOW;
if (LED_achter_state == HIGH){
digitalWrite(LED_zij,HIGH);
LED_zij_state = HIGH;
}
else {
digitalWrite (LED_rechts,LOW);
LED_rechts_state = LOW;
}
}
}
void functie_aan(){
if (LED_achter_state == LOW)
{
digitalWrite(LED_achter, HIGH);
LED_achter_state = HIGH;
digitalWrite(LED_zij, HIGH);
LED_zij_state = HIGH;
}
else
{
digitalWrite(LED_achter, LOW);
LED_achter_state = LOW;
digitalWrite(LED_zij, LOW);
LED_zij_state = LOW;
}
Serial.println(LED_achter_state);
}
[/code]