18-01-2022, 20:44
Cześć, jestem nowym użytkownikiem arduino uno i potrzebuję pomocy z programem.
Moim celem jest napisanie programu, który umożliwi przełączanie diod po każdorazowym wciśnięciu przycisku.
1. Po pierwszym wciśnięciu powinien zapalić diodę na pinie 5.
2. Po drugim powinien wykonać funkcję, która będzie gasiła i zapalała diody (KnightRider).
3. Po trzecim powinien zapalić wszystkie diody prócz tej na pinie 5.
4. Po czwartym powinien znowu zapalić diodę na pinie 5 i zgasić pozostałe diody.
itd...
Do punktu nr.2 (włącznie) wszystko działa jak założyłem. Niestety po wciśnięciu przycisku program nie reaguje i nie wychodzi z pętli Knightridera.
Proszę o pomoc, nakierowanie gdzie doczytać ewentualnie o pomoc w kodzie.
Kod programu:
int stan=0;
int val;
int val2;
int buttonState;
void setup() {
for(int i=3;i<=7;i++)
pinMode(i,OUTPUT);
pinMode(2,INPUT_PULLUP);
buttonState = digitalRead(2);
}
void loop() {
val=digitalRead(2);
delay(10);
val2=digitalRead(2);
if(val == val2){
if(val != buttonState) {
if(val == LOW){
if(stan == 0){
stan=1;
} else {
if(stan == 1) {
stan=2;
} else {
if (stan == 2){
stan=0;
}
}
}
}
}
buttonState = val;
}
///////////
if(stan==0){
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
}
if(stan==1){
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,HIGH);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
}
if(stan==2){
for (int i=3;i<=7;i++)
{
digitalWrite(i,HIGH);
digitalWrite(i-1,LOW);
delay(200);
}
for (int i=7;i<=7 && i>=5;i--)
{
digitalWrite(i,LOW);
digitalWrite(i-1,HIGH);
delay(200);
if(i==5){
digitalWrite(4,LOW);
}
}
}
}
Moim celem jest napisanie programu, który umożliwi przełączanie diod po każdorazowym wciśnięciu przycisku.
1. Po pierwszym wciśnięciu powinien zapalić diodę na pinie 5.
2. Po drugim powinien wykonać funkcję, która będzie gasiła i zapalała diody (KnightRider).
3. Po trzecim powinien zapalić wszystkie diody prócz tej na pinie 5.
4. Po czwartym powinien znowu zapalić diodę na pinie 5 i zgasić pozostałe diody.
itd...
Do punktu nr.2 (włącznie) wszystko działa jak założyłem. Niestety po wciśnięciu przycisku program nie reaguje i nie wychodzi z pętli Knightridera.
Proszę o pomoc, nakierowanie gdzie doczytać ewentualnie o pomoc w kodzie.
Kod programu:
int stan=0;
int val;
int val2;
int buttonState;
void setup() {
for(int i=3;i<=7;i++)
pinMode(i,OUTPUT);
pinMode(2,INPUT_PULLUP);
buttonState = digitalRead(2);
}
void loop() {
val=digitalRead(2);
delay(10);
val2=digitalRead(2);
if(val == val2){
if(val != buttonState) {
if(val == LOW){
if(stan == 0){
stan=1;
} else {
if(stan == 1) {
stan=2;
} else {
if (stan == 2){
stan=0;
}
}
}
}
}
buttonState = val;
}
///////////
if(stan==0){
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
}
if(stan==1){
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,HIGH);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
}
if(stan==2){
for (int i=3;i<=7;i++)
{
digitalWrite(i,HIGH);
digitalWrite(i-1,LOW);
delay(200);
}
for (int i=7;i<=7 && i>=5;i--)
{
digitalWrite(i,LOW);
digitalWrite(i-1,HIGH);
delay(200);
if(i==5){
digitalWrite(4,LOW);
}
}
}
}