Arduino Polska Forum
indeksowanie wartosci - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica)
+--- Wątek: indeksowanie wartosci (/watek-indeksowanie-wartosci)



indeksowanie wartosci - Masahiro - 12-04-2016

witam
Moduł: Arduino Due + ADAFRUIT motorshield v2

proszę o pomoc, jak indeksować wartości.


Już objaśniam o co chodzi:
mam 6 wejść analogowych - zmienne EMGinput
nie ma potrzeby tworzyć 6 różnych zmiennych np int EMGinput1, EMGinput2 itd.
chciałbym zrobić coś takiego:


Kod:
void setup() {
  for(int r=0;r<7;r++)
  {
EMGinput[r]=r+1;
EMGvalue[r]=map(EMGinput[r],0, 1024, 0, 255);
  }

następnie w kodzie odwoływać się do poszególnych wartości kolejnych zmiennych np:
void loop(){
if EMGvalue[1] > 100 {
  myMotor1->run(FORWARD);
  myMotor1->setSpeed(EMGvalue[1]);
  }

itd
w powyższym fragmencie sprawdzam wartość pierwszego wejścia analogowego i jeżeli jest większe od 100 to wykonuję poniższe czynności

czy to jest poprawny sposób? zaoszczędzi mi to wiele miejsca
jestem słabo obeznany z C++
do tej pory zajmowałem się PLC, z programowania liznałem niewiele


RE: indeksowanie wartosci - adix - 12-04-2016

Kod:
for(int r=0;r<7;r++)
  {
EMGinput[r]=r+1;
EMGvalue[r]=map(EMGinput[r],0, 1024, 0, 255);
  }
tworząc to w setup odczyta będzie tylko raz kolejny odczyt nastąpi po restarcie programu
Kod:
EMGinput[r]=r+1;
po drugie to nie jest konieczne ponieważ tablice zaczynają się od bitu 0


RE: indeksowanie wartosci - Masahiro - 13-04-2016

(12-04-2016, 23:22)adix napisał(a):
Kod:
 
 for(int r=0;r<7;r++)
 {
EMGinput[r]=r+1;
EMGvalue[r]=map(EMGinput[r],0, 1024, 0, 255);
 }

 
tworząc to w setup odczyta będzie tylko raz  kolejny odczyt nastąpi po restarcie programu
Kod:
EMGinput[r]=r+1;
po drugie to nie jest konieczne ponieważ tablice zaczynają się od bitu 0

Jeżeli zaczynają się od bitu 0 a wejścia analogowe od 1 to czy to nie jest poprawne? 

Pozdrawiam


RE: indeksowanie wartosci - adix - 14-04-2016

tak i nie EMGinput[r]=r+1;

to co tu napisać to inaczej
a=r+1
EMGvalue[r]=map(a[r],0, 1024, 0, 255);
EMGinput[r] tu nie wpisujesz mapy tylko 'r+1' a 'r' nadal jest 0 1 2....i tak do końca for a nie ka byc powino czyli 0+1 ,1+1 ,2+1... aby to miało sens
to musi być r=r+1
ale to zakłóci funkcje for a wiec musisz zmienić zmienna jeśli chcesz zaczynać od 1 a wiedz wygloda to tak
Kod:
for(int r=0;r<7;r++)
{
w=r+1;
EMGvalue[w]=map(EMGinput[w],0, 1024, 0, 255);
}
i wejścia a zaczynają się od A0...A7


RE: indeksowanie wartosci - Masahiro - 14-04-2016

Bardzo dziękuję za pomoc