Index. proměnná v Arduinu
Moderátor: Moderátoři
dobře zitra na tom budu pokračovat a dám vědět
1. dle posledni rady co jsi napsal
2 pak mam jeste ideu ozkouset nejprve naplněni jen jedné proměnne
jako by pole bylo jen jedno promenna hodnota treba y
a pak ji vytisknout a v tomto duchu potom upravit i pole
,,, verim ze to bude fachat .
dík za pomoc !!!
1. dle posledni rady co jsi napsal
2 pak mam jeste ideu ozkouset nejprve naplněni jen jedné proměnne
jako by pole bylo jen jedno promenna hodnota treba y
a pak ji vytisknout a v tomto duchu potom upravit i pole
,,, verim ze to bude fachat .
dík za pomoc !!!
el.návrhář HW a SW a DPS
Pokud víš, že nebudeš po UART posílat hodnotu do Atiny větší než 255, bude lepší to pole dimenzovat jako char.
Takže třeba takhle?
Takže třeba takhle?
Kód: Vybrat vše
unsigned char x[200]; //pole o rozměru 200 prvků, doporučuji unsigned, zápornou hodnotu tam asi mít nebudeš
char test ='A';
void setup()
{
Serial.begin(9600); // pozdeji bude navolena vyssi rychlost
int bytesSent = Serial.write("---PROPOJENO---");
}
void loop()
{
while (Serial.available() > 0) //pokud jsou nějaká data k dispozici
{
Serial.readBytes(x,200); //načti 200 bytes do x
for (int i =0;i<200;i++)
{
Serial.println(x[i]); //vytiskni data do UART
if (x[i]== test)
{
//udělej něco - já nevím co
}
}
}
}
A nebo po tom jednom bytu, jak si psal:
Kód: Vybrat vše
unsigned char x[200]; //pole o rozměru 200 prvků, doporučuji unsigned, zápornou hodnotu tam asi mít nebudeš
char test ='A'; //test znak
unsigned char rec_byte=0; //aktuálně přijatý znak
int i=0; //index pole
void setup()
{
Serial.begin(9600); // pozdeji bude navolena vyssi rychlost
int bytesSent = Serial.write("---PROPOJENO---");
}
void loop()
{
if (Serial.available() > 0) //pokud jsou nějaká data k dispozici
{
if (i > 199) i = 0; //konec indexu pole, mazej na nulu
rec_byte = Serial.read(); //ulož přijatý byte do proměnné
x[i] = rec_byte; //ulož přijatý byte do pole
Serial.println(rec_byte); //vytiskni přijatý znak
i++; //inkrementuj pozici indexu pole
if (rec_byte == test) //pokud je přijatý znak roven 'A'
{
//do something //tak něco udělej
}
}
}
NAKONEC JSEM UPuSTIL OD POLÍ
a zvolil jednoduché řešení viz code:
// SENZOR bude odesilat DATA DLE POVELŮ A B z monitoru
int x = 0; // PRIJIMANA DATA senzoru
int u1 = 100 ; // TESTOVACI data pro povel A
int u2 = 200 ; // TESTOVACI data pro povel B
void setup() {
Serial.begin(115200);
int bytesSent = Serial.println("-READY-");
}
void loop() {
if (Serial.available() > 0) {
x = Serial.read();
}
if ( x > 64 and x < 66 ) { // X=65 ZNAK A POVEL 1
Serial.println(int(u1));
}
if ( x > 65 and x < 67 ) { // X=66 ZNAK B POVEL 2
Serial.println(int(u2));
}
delay(500);
}
// nema cenu komplikovat to polem ale ridit proces pomocí povelů A,B
asi jich bude i více ale struktura programu bude obdobná
a zvolil jednoduché řešení viz code:
// SENZOR bude odesilat DATA DLE POVELŮ A B z monitoru
int x = 0; // PRIJIMANA DATA senzoru
int u1 = 100 ; // TESTOVACI data pro povel A
int u2 = 200 ; // TESTOVACI data pro povel B
void setup() {
Serial.begin(115200);
int bytesSent = Serial.println("-READY-");
}
void loop() {
if (Serial.available() > 0) {
x = Serial.read();
}
if ( x > 64 and x < 66 ) { // X=65 ZNAK A POVEL 1
Serial.println(int(u1));
}
if ( x > 65 and x < 67 ) { // X=66 ZNAK B POVEL 2
Serial.println(int(u2));
}
delay(500);
}
// nema cenu komplikovat to polem ale ridit proces pomocí povelů A,B
asi jich bude i více ale struktura programu bude obdobná
el.návrhář HW a SW a DPS
Když jich bude více, tak to piš takto:elnovy píše:...
asi jich bude i více ale struktura programu bude obdobná
Kód: Vybrat vše
switch(x)
{
case 65:
Serial.println(int(u1));
break;
case 66:
Serial.println(int(u2));
break;
case 67:
....
}