PC - ARDUINO ovládání vstupů a výstupů
Re: PC - ARDUINO ovládání vstupů a výstupů
https://en.wikipedia.org/wiki/C%2B%2B_classes
https://arduino.cz/objektove-orientovan ... amovani-i/
https://arduino.cz/objektove-orientovan ... amovani-i/
Re: PC - ARDUINO ovládání vstupů a výstupů
Díky, mrknu na to.
Prosím ještě o jednu radu. Mrkněte na kód a řekněte mi prosím PROČ?
Nechal jsem si cyklem udělat výpis hodnot načtených z EEPROM do proměnné bufer[].
Výpis:
Když si ale do výpisu přidám vytištění i proměnné i, tak mi to výpis naprosto doj..., ale nechápu proč...? Chtěl jsem ověřit správnost načítání a tedy vytisknout index/hodnota.
Výpis:
Proč to teď načte poprvé 6 hodnot a pak pořád po třech?
Prosím ještě o jednu radu. Mrkněte na kód a řekněte mi prosím PROČ?
Nechal jsem si cyklem udělat výpis hodnot načtených z EEPROM do proměnné bufer[].
Kód: Vybrat vše
#include <EEPROM.h>
byte indexProgramuL1 = 0;
byte buferL1[7];
byte adresaL1 = 100;
void setup() {
Serial.begin(9600);
for (byte y = 0; y < 50; y++) {
for (byte i = indexProgramuL1; i < indexProgramuL1+6; i++) { // načtení z EE do buferu
buferL1[i] = EEPROM.read(adresaL1 + i);
Serial.print(buferL1[i]);
Serial.print(" - ");
}
Serial.println();
if (indexProgramuL1 > 9) {
indexProgramuL1 = 0;
Serial.println("-------------------------------");
} else {
indexProgramuL1 += 3;
Serial.println();
}
}
} // konec setup ----------------------------------------------------
void loop() {
} // konec void -----------------------------------------------------
Výpis:
Kód: Vybrat vše
20:34:36.065 -> 0 - 0 - 0 - 0 - 1 - 12 -
20:34:36.065 ->
20:34:36.065 -> 0 - 1 - 12 - 0 - 2 - 0 -
20:34:36.112 ->
20:34:36.112 -> 0 - 2 - 0 - 0 - 3 - 20 -
20:34:36.159 ->
20:34:36.159 -> 0 - 3 - 20 - 0 - 4 - 0 -
20:34:36.206 ->
20:34:36.206 -> 0 - 4 - 0 - 0 - 5 - 0 -
20:34:36.206 -> -------------------------------
20:34:36.253 -> 0 - 0 - 0 - 0 - 1 - 12 -
20:34:36.299 ->
20:34:36.299 -> 0 - 1 - 12 - 0 - 2 - 0 -
20:34:36.299 ->
20:34:36.299 -> 0 - 2 - 0 - 0 - 3 - 20 -
20:34:36.346 ->
20:34:36.346 -> 0 - 3 - 20 - 0 - 4 - 0 -
20:34:36.393 ->
20:34:36.393 -> 0 - 4 - 0 - 0 - 5 - 0 -
20:34:36.393 -> -------------------------------
20:34:36.440 -> 0 - 0 - 0 - 0 - 1 - 12 -
20:34:36.440 ->
20:34:36.440 -> 0 - 1 - 12 - 0 - 2 - 0 -
20:34:36.487 ->
20:34:36.487 -> 0 - 2 - 0 - 0 - 3 - 20 -
20:34:36.534 ->
20:34:36.534 -> 0 - 3 - 20 - 0 - 4 - 0 -
20:34:36.534 ->
20:34:36.534 -> 0 - 4 - 0 - 0 - 5 - 0 -
20:34:36.581 -> -------------------------------
20:34:36.628 -> 0 - 0 - 0 - 0 - 1 - 12 -
20:34:36.674 ->
20:34:36.674 -> 0 - 1 - 12 - 0 - 2 - 0 -
20:34:36.674 ->
20:34:36.674 -> 0 - 2 - 0 - 0 - 3 - 20 -
20:34:36.721 ->
20:34:36.721 -> 0 - 3 - 20 - 0 - 4 - 0 -
20:34:36.721 ->
20:34:36.768 -> 0 - 4 - 0 - 0 - 5 - 0 -
20:34:36.768 -> -------------------------------
20:34:36.768 -> 0 - 0 - 0 - 0 - 1 - 12 -
20:34:36.815 ->
20:34:36.815 -> 0 - 1 - 12 - 0 - 2 - 0 -
20:34:36.862 ->
20:34:36.862 -> 0 - 2 - 0 - 0 - 3 - 20 -
20:34:36.909 ->
20:34:36.909 -> 0 - 3 - 20 - 0 - 4 - 0 -
20:34:36.909 ->
20:34:36.909 -> 0 - 4 - 0 - 0 - 5 - 0 -
20:34:36.956 -> -------------------------------
20:34:37.003 -> 0 - 0 - 0 - 0 - 1 - 12 -
20:34:37.003 ->
20:34:37.003 -> 0 - 1 - 12 - 0 - 2 - 0 -
20:34:37.049 ->
20:34:37.049 -> 0 - 2 - 0 - 0 - 3 - 20 -
20:34:37.096 ->
20:34:37.096 -> 0 - 3 - 20 - 0 - 4 - 0 -
20:34:37.096 ->
20:34:37.096 -> 0 - 4 - 0 - 0 - 5 - 0 -
20:34:37.143 -> -------------------------------
20:34:37.143 -> 0 - 0 - 0 - 0 - 1 - 12 -
20:34:37.190 ->
20:34:37.190 -> 0 - 1 - 12 - 0 - 2 - 0 -
20:34:37.237 ->
20:34:37.237 -> 0 - 2 - 0 - 0 - 3 - 20 -
20:34:37.237 ->
20:34:37.237 -> 0 - 3 - 20 - 0 - 4 - 0 -
20:34:37.284 ->
20:34:37.284 -> 0 - 4 - 0 - 0 - 5 - 0 -
20:34:37.331 -> -------------------------------
20:34:37.378 -> 0 - 0 - 0 - 0 - 1 - 12 -
20:34:37.378 ->
20:34:37.378 -> 0 - 1 - 12 - 0 - 2 - 0 -
20:34:37.424 ->
20:34:37.424 -> 0 - 2 - 0 - 0 - 3 - 20 -
20:34:37.424 ->
20:34:37.471 -> 0 - 3 - 20 - 0 - 4 - 0 -
20:34:37.471 ->
20:34:37.471 -> 0 - 4 - 0 - 0 - 5 - 0 -
20:34:37.471 -> -------------------------------
20:34:37.518 -> 0 - 0 - 0 - 0 - 1 - 12 -
20:34:37.565 ->
20:34:37.565 -> 0 - 1 - 12 - 0 - 2 - 0 -
20:34:37.612 ->
20:34:37.612 -> 0 - 2 - 0 - 0 - 3 - 20 -
20:34:37.612 ->
20:34:37.612 -> 0 - 3 - 20 - 0 - 4 - 0 -
20:34:37.659 ->
20:34:37.659 -> 0 - 4 - 0 - 0 - 5 - 0 -
20:34:37.706 -> -------------------------------
20:34:37.706 -> 0 - 0 - 0 - 0 - 1 - 12 -
20:34:37.753 ->
20:34:37.753 -> 0 - 1 - 12 - 0 - 2 - 0 -
20:34:37.753 ->
20:34:37.799 -> 0 - 2 - 0 - 0 - 3 - 20 -
20:34:37.799 ->
20:34:37.799 -> 0 - 3 - 20 - 0 - 4 - 0 -
20:34:37.846 ->
20:34:37.846 -> 0 - 4 - 0 - 0 - 5 - 0 -
20:34:37.846 -> -------------------------------
Kód: Vybrat vše
#include <EEPROM.h>
byte indexProgramuL1 = 0;
byte buferL1[7];
byte adresaL1 = 100;
void setup() {
Serial.begin(9600);
for (byte y = 0; y < 50; y++) {
for (byte i = indexProgramuL1; i < indexProgramuL1+6; i++) { // načtení z EE do buferu
buferL1[i] = EEPROM.read(adresaL1 + i);
Serial.print(i);
Serial.print("/");
Serial.print(buferL1[i]);
Serial.print(" - ");
}
Serial.println();
if (indexProgramuL1 > 9) {
indexProgramuL1 = 0;
Serial.println("-------------------------------");
} else {
indexProgramuL1 += 3;
Serial.println();
}
}
} // konec setup ----------------------------------------------------
void loop() {
} // konec void -----------------------------------------------------
Kód: Vybrat vše
20:26:33.310 -> 0/0 - 1/0 - 2/0 - 3/0 - 4/1 - 5/12 -
20:26:33.310 ->
20:26:33.310 -> 3/0 - 4/1 - 5/12 - 6/0 - 7/2 -
20:26:33.357 ->
20:26:33.357 -> 5/12 - 6/0 - 7/2 -
20:26:33.404 ->
20:26:33.404 -> 5/12 - 6/0 - 7/2 -
20:26:33.404 ->
20:26:33.404 -> 5/12 - 6/0 - 7/2 -
20:26:33.451 ->
20:26:33.451 -> 5/12 - 6/0 - 7/2 -
20:26:33.451 ->
20:26:33.451 -> 5/12 - 6/0 - 7/2 -
20:26:33.451 ->
20:26:33.451 -> 5/12 - 6/0 - 7/2 -
20:26:33.498 ->
20:26:33.498 -> 5/12 - 6/0 - 7/2 -
20:26:33.545 ->
20:26:33.545 -> 5/12 - 6/0 - 7/2 -
20:26:33.545 ->
20:26:33.545 -> 5/12 - 6/0 - 7/2 -
20:26:33.545 ->
20:26:33.545 -> 5/12 - 6/0 - 7/2 -
20:26:33.592 ->
20:26:33.592 -> 5/12 - 6/0 - 7/2 -
20:26:33.639 ->
20:26:33.639 -> 5/12 - 6/0 - 7/2 -
20:26:33.639 ->
20:26:33.686 -> 5/12 - 6/0 - 7/2 -
20:26:33.686 ->
20:26:33.686 -> 5/12 - 6/0 - 7/2 -
20:26:33.686 ->
20:26:33.686 -> 5/12 - 6/0 - 7/2 -
20:26:33.732 ->
20:26:33.732 -> 5/12 - 6/0 - 7/2 -
20:26:33.732 ->
20:26:33.732 -> 5/12 - 6/0 - 7/2 -
20:26:33.779 ->
20:26:33.779 -> 5/12 - 6/0 - 7/2 -
20:26:33.779 ->
20:26:33.779 -> 5/12 - 6/0 - 7/2 -
20:26:33.779 ->
20:26:33.826 -> 5/12 - 6/0 - 7/2 -
20:26:33.826 ->
20:26:33.826 -> 5/12 - 6/0 - 7/2 -
20:26:33.873 ->
20:26:33.873 -> 5/12 - 6/0 - 7/2 -
20:26:33.920 ->
20:26:33.920 -> 5/12 - 6/0 - 7/2 -
20:26:33.920 ->
20:26:33.920 -> 5/12 - 6/0 - 7/2 -
20:26:33.920 ->
20:26:33.920 -> 5/12 - 6/0 - 7/2 -
20:26:33.967 ->
20:26:33.967 -> 5/12 - 6/0 - 7/2 -
20:26:34.014 ->
20:26:34.014 -> 5/12 - 6/0 - 7/2 -
20:26:34.014 ->
20:26:34.014 -> 5/12 - 6/0 - 7/2 -
20:26:34.014 ->
20:26:34.014 -> 5/12 - 6/0 - 7/2 -
20:26:34.060 ->
20:26:34.060 -> 5/12 - 6/0 - 7/2 -
20:26:34.060 ->
20:26:34.060 -> 5/12 - 6/0 - 7/2 -
20:26:34.107 ->
20:26:34.107 -> 5/12 - 6/0 - 7/2 -
20:26:34.154 ->
20:26:34.154 -> 5/12 - 6/0 - 7/2 -
20:26:34.154 ->
20:26:34.154 -> 5/12 - 6/0 - 7/2 -
20:26:34.154 ->
20:26:34.154 -> 5/12 - 6/0 - 7/2 -
20:26:34.201 ->
20:26:34.201 -> 5/12 - 6/0 - 7/2 -
20:26:34.248 ->
20:26:34.248 -> 5/12 - 6/0 - 7/2 -
20:26:34.248 ->
20:26:34.248 -> 5/12 - 6/0 - 7/2 -
20:26:34.248 ->
20:26:34.248 -> 5/12 - 6/0 - 7/2 -
20:26:34.295 ->
20:26:34.295 -> 5/12 - 6/0 - 7/2 -
20:26:34.342 ->
20:26:34.342 -> 5/12 - 6/0 - 7/2 -
20:26:34.342 ->
20:26:34.342 -> 5/12 - 6/0 - 7/2 -
20:26:34.389 ->
20:26:34.389 -> 5/12 - 6/0 - 7/2 -
20:26:34.389 ->
20:26:34.389 -> 5/12 - 6/0 - 7/2 -
20:26:34.389 ->
20:26:34.435 -> 5/12 - 6/0 - 7/2 -
20:26:34.435 ->
20:26:34.435 -> 5/12 - 6/0 - 7/2 -
20:26:34.482 ->
20:26:34.482 -> 5/12 - 6/0 - 7/2 -
20:26:34.482 ->
20:26:34.482 -> 5/12 - 6/0 - 7/2 -
20:26:34.482 ->
Proč to teď načte poprvé 6 hodnot a pak pořád po třech?
Re: PC - ARDUINO ovládání vstupů a výstupů
V kodu nevidim nic zvlastniho, ale nevim, cim to nechavas vypisovat, protoze to se chova docela divne
jednak to teda pise ty casy a sipky na zacatek radku
ackoli posilas data celkem pravidelne, tak ty casy skacou trochu divne i v tom spravnem vypisu - nekolik hodnot se vzdy opakuje (na milisekundu) a pak to poskoci o takovych +/- 50 milisekund, ale nepravidelne - po 2-4 radcich
v tom spatnem vypisu to taky skace, ale uz v prvni radce chybi posledni dva udaje, druha radka je konec te prvni (a chybi dva prvni udaje) a vsechny dalsi jsou jen konec te prvni - jako by mel problemy ten program, co to prijima a nedokazal to spravne vypsat, nebo naopak nedokazal dat spravne najevo, ze data nacetl a tudiz dostaval jen porad konec tehoz bufferu, ktery "neumi docist"
Takze bych se zameril na to, co ta data z Arduina cte a zobrazuje, zda neni chyba tam (a zda je to spravne nastaveno)
(co je to vlastne za program?)
jednak to teda pise ty casy a sipky na zacatek radku
ackoli posilas data celkem pravidelne, tak ty casy skacou trochu divne i v tom spravnem vypisu - nekolik hodnot se vzdy opakuje (na milisekundu) a pak to poskoci o takovych +/- 50 milisekund, ale nepravidelne - po 2-4 radcich
v tom spatnem vypisu to taky skace, ale uz v prvni radce chybi posledni dva udaje, druha radka je konec te prvni (a chybi dva prvni udaje) a vsechny dalsi jsou jen konec te prvni - jako by mel problemy ten program, co to prijima a nedokazal to spravne vypsat, nebo naopak nedokazal dat spravne najevo, ze data nacetl a tudiz dostaval jen porad konec tehoz bufferu, ktery "neumi docist"
Takze bych se zameril na to, co ta data z Arduina cte a zobrazuje, zda neni chyba tam (a zda je to spravne nastaveno)
(co je to vlastne za program?)
Re: PC - ARDUINO ovládání vstupů a výstupů
IMHO je to SerialMonitor v Arduino IDE, tam se dá zapnout ten prefix řádku "time -> "
Re: PC - ARDUINO ovládání vstupů a výstupů
Jo, je to Serial monitor z IDE. A nemze byt chyba v desce (Mega z Ali)? Zkusim doma jinou.
Re: PC - ARDUINO ovládání vstupů a výstupů
Kód: Vybrat vše
Serial.println();
if (indexProgramuL1 > 9) {
indexProgramuL1 = 0;
Serial.println("-------------------------------");
} else {
indexProgramuL1 += 3;
Serial.println();
}
Kód: Vybrat vše
for (byte i = indexProgramuL1; i < indexProgramuL1+6; i++) { // načtení z EE do buferu
buferL1[i] = EEPROM.read(adresaL1 + i);
Serial.print(buferL1[i]);
Serial.print(" - ");
}
Re: PC - ARDUINO ovládání vstupů a výstupů
Jak to, že jsem za hranicí? V EE mám uloženou řadu čísel (18 hodnot) a v každém kole potřebuji načíst a uložit do pole 6 hodnot, pak posunout kurzor o tři a zase načíst 6 hodnot (poslední tři a nové tři hodnoty). Jak načte posledních 6 hodnot, vynuluje index a jede od začátku .
Re: PC - ARDUINO ovládání vstupů a výstupů
To ma OndraN pravdu - ja koukal jen na ty zmeny.
V prvnim pruchodu ti i jde od 0 do 6 a je ve OK.
V druhem pruchodu ti i jde od 3 do 9 a zapis do bufferL1[7]..bufferL1[9] jde mimo puvodne alokovany bufferL1 (0..6) cili si prepisujes jine promenne okolo (buferL1 = EEPROM.read(...) a dal je to jen horsi a horsi.
Ze se uz v puvodni verzi nestalo nic ocividne zleho je jen a jen pouha nahoda.
V prvnim pruchodu ti i jde od 0 do 6 a je ve OK.
V druhem pruchodu ti i jde od 3 do 9 a zapis do bufferL1[7]..bufferL1[9] jde mimo puvodne alokovany bufferL1 (0..6) cili si prepisujes jine promenne okolo (buferL1 = EEPROM.read(...) a dal je to jen horsi a horsi.
Ze se uz v puvodni verzi nestalo nic ocividne zleho je jen a jen pouha nahoda.
Re: PC - ARDUINO ovládání vstupů a výstupů
Ah, to mi nedošlo . Ten zápis do bufetu musí jít zase 0 - 5, jasné ... Chlapi díky, jdu to opravit a dam vědět ...
Re: PC - ARDUINO ovládání vstupů a výstupů
Tak problém byl nalezen a vyřešen, opravdu to přetékalo.
Teď už to vypisuje správně:
To y mám 15 jen abych nasimuloval, jestli se to chová při přechodu zpět na začátek.
Díky moc za pomoc, já to prostě neviděl...
Teď už to vypisuje správně:
Kód: Vybrat vše
for (byte y = 0; y < 15; y++) {
for (byte z = 0; z < 6; z++) {
buferL1[z] = EEPROM.read(adresaL1 + indexProgramuL1);
Serial.print(indexProgramuL1);
Serial.print("/");
Serial.print(z);
Serial.print( "//");
Serial.print(buferL1[z]);
Serial.print(" - ");
indexProgramuL1++;
}
Serial.println();
if (indexProgramuL1 > 15) {
indexProgramuL1 = 0;
Serial.println("-------------------------------");
} else {
indexProgramuL1 -= 3;
Serial.println();
}
}
Díky moc za pomoc, já to prostě neviděl...
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 13 hostů