24-11-2018, 22:54
Witam szanowne grono,
zacznę od tego, że nie jestem jeszcze zbyt biegły w pisaniu programów. Czasami potrzebuje podpowiedzi.
Ale do rzeczy. Chcę za pomocą wspomnianej matrycy wyświetlać odległość od przeszkody. Mam cztery czujniki HC SR04, każde dwa rządki LED odpowiadają jednemu czujnikowi.
Problem polega na tym, że każdy czujnik "wyświetlając odległość gasi odczyt poprzedniego" i powstaje cykliczne mruganie. Jest to spowodowane adresowaniem ledów, dlatego chciałem pod koniec programu dodawać tablice odpowiednich bitów i dopiero wysyłać jedną tablicę do matrycy. Niestety nie mogę sobie z tym poradzić już od tygodnia. Czy ktoś ma pomysł jak to rozwiązać?
Zestaw tablic do jednego czujnika:
byte aa1[8]= {0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //Tablica bitów z wyświetlacza LED1
byte bb1[8]= {0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00};
byte cc1[8]= {0xC0,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00};
byte dd1[8]= {0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0x00};
byte ee1[8]= {0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00};
byte ff1[8]= {0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00};
byte gg1[8]= {0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00};
Warunek dla jednego czujnika:
if(wynik1<=5){
a= hh1;
}
else if(wynik1<=10){
a=gg1;
}
else if(wynik1 <=20)
{
a=ff1;
}
else if(wynik1 <=40)
{
a=ee1;
}
else if(wynik1 <=60)
{
a=dd1;
}
else if(wynik1 <=90)
{
a=cc1;
}
else if(wynik1 <=120)
{
a=bb1;
}
else if(wynik1 >150)
{
a=aa1;
}
Wyświetlanie:
printByte(a);
delay(500);
printByte(b);
delay(500);
printByte©;
delay(500);
printByte(d);
delay(500);
Jeśli będzie potrzeba mogę wstawić cały program
Głównie chodzi mi o to czy da się dodać tablice w pętli, bo ja do tego nie doszedłem...
zacznę od tego, że nie jestem jeszcze zbyt biegły w pisaniu programów. Czasami potrzebuje podpowiedzi.
Ale do rzeczy. Chcę za pomocą wspomnianej matrycy wyświetlać odległość od przeszkody. Mam cztery czujniki HC SR04, każde dwa rządki LED odpowiadają jednemu czujnikowi.
Problem polega na tym, że każdy czujnik "wyświetlając odległość gasi odczyt poprzedniego" i powstaje cykliczne mruganie. Jest to spowodowane adresowaniem ledów, dlatego chciałem pod koniec programu dodawać tablice odpowiednich bitów i dopiero wysyłać jedną tablicę do matrycy. Niestety nie mogę sobie z tym poradzić już od tygodnia. Czy ktoś ma pomysł jak to rozwiązać?
Zestaw tablic do jednego czujnika:
byte aa1[8]= {0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //Tablica bitów z wyświetlacza LED1
byte bb1[8]= {0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00};
byte cc1[8]= {0xC0,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00};
byte dd1[8]= {0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0x00};
byte ee1[8]= {0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00};
byte ff1[8]= {0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00};
byte gg1[8]= {0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00};
Warunek dla jednego czujnika:
if(wynik1<=5){
a= hh1;
}
else if(wynik1<=10){
a=gg1;
}
else if(wynik1 <=20)
{
a=ff1;
}
else if(wynik1 <=40)
{
a=ee1;
}
else if(wynik1 <=60)
{
a=dd1;
}
else if(wynik1 <=90)
{
a=cc1;
}
else if(wynik1 <=120)
{
a=bb1;
}
else if(wynik1 >150)
{
a=aa1;
}
Wyświetlanie:
printByte(a);
delay(500);
printByte(b);
delay(500);
printByte©;
delay(500);
printByte(d);
delay(500);
Jeśli będzie potrzeba mogę wstawić cały program
Głównie chodzi mi o to czy da się dodać tablice w pętli, bo ja do tego nie doszedłem...