Hallo,
Ik heb een Arduino Uno en ik wil met 10 LED's verschillende programma's laten draaien. Laten knipperen oplichten enz. Ik wil dat elk programma 5 x zich herhaald en daarna de volgende 5x en zo door. Als ik de tijd wijzig in mijn programmering dan blijft programma 2 continu draaien..
Ik gebruik 10 LED's - PIN 2 t/m 11, wat veel gebeurd is dat op pin 8 (Led 7) zo maar ineens uit blijft en bij het andere programma wel weer aanspringt.
zie hieronder de programmering:
#include <stdlib.h>
#include <unistd.h>
int SequentialRunCount = 0;
int FollowUpRunCount = 0;
int FlashyRunCount = 0;
int pinArray[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
int odd[] = {3, 5, 7, 9, 11};
int even[] = {2, 4, 6, 8, 10};
void setup() {
for(int i = 0; i < sizeof(pinArray); i++) {
pinMode(pinArray[i], OUTPUT);
}
}
void sequential() {
for(int i = 0; i < sizeof(pinArray); i++) {
digitalWrite(pinArray[i], HIGH);
delay(50);
}
for(int i = 10; i >= 0; i--) {
digitalWrite(pinArray[i], LOW);
delay(50);
}
delay(50);
}
void first() {
for(int i = 10; i >= 0; i--) {
digitalWrite(pinArray[i], HIGH);
delay(50);
}
for(int i = 0; i < sizeof(pinArray); i++) {
digitalWrite(pinArray[i], LOW);
delay(50);
}
delay(50);
}
void follow() {
for(int i = 0; i < sizeof(pinArray); i++) {
if(i > 1 && i <= 10) {
digitalWrite(pinArray[i], HIGH);
digitalWrite(pinArray[i - 2], LOW);
delay(100);
} else if(i == 0 || i == 1) {
digitalWrite(pinArray[i], HIGH);
delay(100);
}
}
for(int i = 0; i < sizeof(pinArray); i++){
digitalWrite(pinArray[i], LOW);
}
}
void followReverse() {
for(int i = sizeof(pinArray) - 1; i >= 0; i--) {
if(i < 9 && i >= 0) {
digitalWrite(pinArray[i], HIGH);
digitalWrite(pinArray[i + 2], LOW);
delay(100);
} else if(i == 10 || i == 9) {
digitalWrite(pinArray[i], HIGH);
delay(100);
}
}
for(int i = 0; i < sizeof(pinArray); i++){
digitalWrite(pinArray[i], LOW);
}
}
void followUp() {
digitalWrite(odd[0], HIGH);
digitalWrite(odd[1], HIGH);
digitalWrite(odd[2], HIGH);
digitalWrite(odd[3], HIGH);
digitalWrite(odd[4], HIGH);
delay(500);
digitalWrite(odd[0], LOW);
digitalWrite(odd[1], LOW);
digitalWrite(odd[2], LOW);
digitalWrite(odd[3], LOW);
digitalWrite(odd[4], LOW);
digitalWrite(even[0], HIGH);
digitalWrite(even[1], HIGH);
digitalWrite(even[2], HIGH);
digitalWrite(even[3], HIGH);
digitalWrite(even[4], HIGH);
delay(500);
digitalWrite(even[0], LOW);
digitalWrite(even[1], LOW);
digitalWrite(even[2], LOW);
digitalWrite(even[3], LOW);
digitalWrite(even[4], LOW);
}
void endSequence() {
delay(400);
for(int i = 0; i < sizeof(pinArray); i++){
digitalWrite(pinArray[i], HIGH);
}
delay(400);
for(int i = 0; i < sizeof(pinArray); i++){
digitalWrite(pinArray[i], LOW);
}
}
void loop() {
delay(200);
for(int i = 0; i < 3; i++) {
follow();
}
for(int i = 0; i < 3; i++) {
first();
}
for(int i = 0; i < 3; i++) {
followUp();
}
for(int i = 0; i < 3; i++) {
sequential();
}
for(int i = 0; i < 3; i++) {
followReverse();
}
for(int i = 0; i < 4; i++) {
endSequence();
}
asm volatile (" jmp 0");
}
Voor mij is Arduino programmeren aardig nieuw dus er zal wellicht fouten in zitten, maar het rare is dus dat led 7 en led 10 vaak het bij 5 herhalingen soms wel of niet doen in 1 programma en in het ander het soms helemaal niet doen..
graag een oplossing gezocht of aanpassingen
zie bijgevoegde foto voor de setup,
