pedyngro
Vytvořené odpovědi
-
AutorPříspěvky
-
pedyngroÚčastník
Díky za radu, už jsem si ho opatřil, všechno ostatní mám. Potřeboval jsem hlavně vědět rozměry, aby to tam pasovalo, a především správnou polaritu, abych to neodpálil.
Ten odkaz na článek bohužel kdovíproč nefunguje, ale všechno podstatné už vím.
Ještě jednou díky!pedyngroÚčastníkDíky, je to ono, měl jsem tam 21 místo 20.
pedyngroÚčastníkMoc díky, konečně to funguje, jak má! Už jsem se sám pokoušel nějakým způsobem předat hodnoty pole přes parametr funkce zobraz, ale nevěděl jsem jak. Asi sebudu muset líp naučit C a nespoléhat na to, že co jde v pythonu, jde všude…
Ještě jednou moc děkuji za čas, který jste si na mě udělal, místo abyste mě odkázal na učebnici C.
pedyngroÚčastníkPokusil jsem se ten soubor nahrát tlačítkem „procházet…“, ale nezobrazilo se to tu, takže jsem to vložil do odpovědi ctrl+c ctrl+v… Jinak moc díky za pomoc!
[code]
byte led1 = 8; //nastavení pinů pro jednotlivé diody
byte led2 = 10;
byte led3 = 12;boolean diody[3][3] = {{},{},{}};
int znak = 20; //doba svícení
int mezeraZnak = 10; //mezera mezi dvěma bliknutími v jednom písmenu
int mezeraPismeno = 30; //mezera mezi písmenychar napis[] = „calex“;
int delkaNapisu = sizeof(napis)/sizeof(napis[0]);void a(){
boolean diody[3][3] = {{1,1,1},{1,0,1},{1,1,1}};
zobraz();
}void c(){
boolean diody[3][3] = {{1,1,1},{1,0,0},{1,1,1}};
zobraz();
}void e(){
boolean diody[3][3] = {{1,1,1},{1,1,0},{1,1,1}};
zobraz();
}void l(){
boolean diody[3][3] = {{1,0,0},{1,0,0},{1,1,1}};
zobraz();
}void o(){
boolean diody[3][3] = {{1,1,1},{1,0,1},{1,1,1}};
zobraz();
}void x(){
boolean diody[3][3] = {{1,0,1},{0,1,0},{1,0,1}};
zobraz();
}void zobraz(){
for (byte i = 0; i < 3; i++){ //postupně projíždí sloupce
for (byte j = 0; j < 3; j++){ //projíždí hodnoty řádku v každém sloupci
if (diody[i][j] == 1){ //pokud je hodnota 1, rozsvítí příslušnou diodu
if (j == 0){
digitalWrite(led1,HIGH);
}
if (j == 1){
digitalWrite(led2,HIGH);
}
if (j == 2){
digitalWrite(led3,HIGH);
}
}
}
delay(znak); //nechá chvíli rozsvíceno
digitalWrite(led1,LOW); //všechno zhasne
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
delay(mezeraZnak); //nechá zhasnuto
}
delay(mezeraPismeno); //nechá zhasnuto – mezera mezi písmeny
}void setup() {
Serial.begin(9600);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
}void loop() {
for (int i = 0; i < delkaNapisu; i++){ //projíždí po jednom pole „nápis“
if(napis[i] == ‚a‘){ //pokud je aktuální hodnota v poli „a“, pustí funkci „a“
a();
}
if(napis[i] == ‚c‘){
c();
}
if(napis[i] == ‚e‘){
e();
}
if(napis[i] == ‚l‘){
l();
}
if(napis[i] == ‚o‘){
x();
}
if(napis[i] == ‚x‘){
x();
}
}
}
[/code]pedyngroÚčastníkPole mám definované na začátku programu (mimo setup a loop), zjistil jsem, že při printování z funkce „zobraz“ jsou tam hodnoty, které jsou zadané na začátku při vytvoření pole, ty další změny už to nebere v potaz…
pedyngroÚčastníkDíky, mělo by to fungovat, ale když nastavím např. ve funkci „a“ hodnoty pole „diody“, někde se to cestou ztratí:
void a(){
boolean diody[3][3] = {{1,1,1},{1,0,1},{1,1,1}};
Serial.println(diody[0][0]);
zobraz();void zobraz(){
Serial.println(diody[0][0]);
for (byte i = 0; i < 3; i++){
atd…Když to nechám vyprintovat z té funkce, kde hodnoty nastavuji, je všechno v pořádku, ale v další funkci, která s hodnotami dále pracuje, už je všechno „0“.
Nevíte, čím by to mohlo být?
pedyngroÚčastníkchtěl jsem přiložit soubor s programem, ale nějak se to tu nezobrazuje…
pedyngroÚčastníkPrávě jsem se dozvěděl o možnosti INPUT_PULLUP 😀
Rád bych ale věděl, proč nefungovala první verzepedyngroÚčastníkUž jsem to vyřešil trochu šikovnějším kódem:
byte led = 50;
byte tlacitko = 52;
void setup() {
pinMode(led,OUTPUT);
pinMode(tlacitko,INPUT);
Serial.begin(9600);
}void loop() {
cteni = digitalRead(tlacitko);
if(cteni == 0){
Serial.println(„high“);
digitalWrite(led,HIGH);
}
else if(cteni == 1){
digitalWrite(led,LOW);
Serial.println(„low“);
}
}Stejně ale nevím, kde jsem předtím udělal chybu…
-
AutorPříspěvky