Usare una int con puntatore

Buonasera, avrei bisogno di un consiglio, con arduinomega invio e ricevo sulla porta seriale 100 int, il mio problema e che vorrei sostituire tutti gli " if" che decidono su che variabile scrivere il valore della seriale in entarta con una int indicizzata dal puntatore. Questo sotto è il codice. Grazie!!

   if (Serial.available() > 0) {   
    integerValue = 0;         
    while(1) {            
      incomingByte = Serial.read();
      if (incomingByte == ',') break;                           // esce se arriva  "'"
      if (incomingByte == -1) continue;                         // controlla che non siano caratteri
      integerValue *= 10;                                       // sposta a sinistra di un posto decimale
                                                               
     integerValue = ((incomingByte - 48) + integerValue);  

    }
    puntatore = puntatore + 1;

 }
      
if (puntatore == 0){rx0 = integerValue; } ..........if (puntatore == 100){rx100 = integerValue; }


if (puntatore == 100){puntatore = -1;}

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni e a leggere il regolamento se non lo hai già fatto: Regolamento Qui una serie di link utili, non inerenti al tuo problema: - qui una serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections - qui le pinout delle varie schede by xxxPighi: Pinout - qui una serie di link [u]generali[/u] utili: Link Utili

lucaragazzo:
Questo sotto è il codice.

  1. non ho capito la domanda.
  2. questo non è un codice, perchè è parziale.
    Mai sentito parlare di vettori/array ? Se ho solo intuito quello che vuoi, forse dovresti leggerti in un libro C qualcosa sull’argomento vettori.

Array?

int rx[101];
rx[puntatore] = integerValue;

Riferito a

integerValue *= 10;[code]
10*10*10*10*10*10*10*10*....*10 puo anche fare tanto ma se prima di questa moltiplicazione inserisci un 0* otterrai sempre 0 qualunque potenza di dieci moltiplicherai ad esso.

Comunque sembra un metodo strano di inviare dati, potresti spiegarcelo per favore?

[/code]

Quel frammento di codice é incomprensibile. Se vuoi risposte deve darci tutto o niente. Ciao Uwe

ciao

Da quello che riesco a capire tu ricevi sulla seriale una cosa tipo:

120,1,222,8,5,0,0,0,47,58,54...

(tutti numeri messi a caso).

Nel tuo primo codice usi la variabile che puoi usare anche come indice dell'array:

rx[puntatore] = value;
puntatore = puntatore + 1;

Chiaramente prima devi dichiarare l'array.

ciao pippo72

Ciao a tutti, vi ringrazio per i numerosi consigli , il problema che avevo non era dovuto all'utilizzo del'if , ma di un delay di 300ms che avevo usato per delle prove e che mi faceva perdere 300ms a scansione, quindi provando con 10 int era qusi istantanea la risposta,con 150 la conversione dell'ultima avveniva dopo 20-25 secondi.Comunque , usando l'array funziona ed è piu pulito,se ci sono errori o metodi migliori fatemi sapere. Questo è il codice, ciao grazie.

int rx0;int rx1;int rx2;int rx3;int rx4;int rx5;int rx6;int rx7;int rx8;int rx9;
int rx10;int rx11;int rx12;int rx13;int rx14;int rx15;int rx16;int rx17;int rx18;int rx19;
int rx20;int rx21;int rx22;int rx23;int rx24;int rx25;int rx26;int rx27;int rx28;int rx29;
int rx30;int rx31;int rx32;int rx33;int rx34;int rx35;int rx36;int rx37;int rx38;int rx39;
int rx40;int rx41;int rx42;int rx43;int rx44;int rx45;int rx46;int rx47;int rx48;int rx49;
int rx50;int rx51;int rx52;int rx53;int rx54;int rx55;int rx56;int rx57;int rx58;int rx59;
int rx60;int rx61;int rx62;int rx63;int rx64;int rx65;int rx66;int rx67;int rx68;int rx69;
int rx70;int rx71;int rx72;int rx73;int rx74;int rx75;int rx76;int rx77;int rx78;int rx79;
int rx80;int rx81;int rx82;int rx83;int rx84;int rx85;int rx86;int rx87;int rx88;int rx89;
int rx90;int rx91;int rx92;int rx93;int rx94;int rx95;int rx96;int rx97;int rx98;int rx99;
int rx100;int rx101;int rx102;int rx103;int rx104;int rx105;int rx106;int rx107;int rx108;int rx109;
int rx110;int rx111;int rx112;int rx113;int rx114;int rx115;int rx116;int rx117;int rx118;int rx119;
int rx120;int rx121;int rx122;int rx123;int rx124;int rx125;int rx126;int rx127;int rx128;int rx129;
int rx130;int rx131;int rx132;int rx133;int rx134;int rx135;int rx136;int rx137;int rx138;int rx139;
int rx140;int rx141;int rx142;int rx143;int rx144;int rx145;int rx146;int rx147;int rx148;int rx149;



int rx[150]; 
int integerValue = 0;  
char incomingByte;
int puntatore = -1;



void setup() {

Serial.begin(38400);

}



void loop() {

//////////////////////////////////////////////////////////////////////////////////////////
///                                 RX da porta seriale 0
//////////////////////////////////////////////////////////////////////////////////////////  

  if (Serial.available() > 0) {   
    integerValue = 0;     
    while(1) {            
      incomingByte = Serial.read();
      if (incomingByte == ',') break;                           // esce se arriva  "'"
      if (incomingByte == -1) continue;                     // controlla che non siano caratteri
      integerValue *= 10;                                       // sposta a sinistra di un posto decimale
                                                               
      integerValue = ((incomingByte - 48) + integerValue);      // converte in INTEGER DA ASCII ,,somma, e sposta a sinistra di un posto decimale
    }
    puntatore = puntatore + 1;
    rx[puntatore] = integerValue;
    rx0 = rx[0]; rx1 = rx[1]; rx2 = rx[2]; rx3 = rx[3]; rx4 = rx[4]; rx5 = rx[5]; rx6 = rx[6]; rx7 = rx[7]; rx8 = rx[8]; rx9 = rx[9];
    rx10 = rx[10]; rx11 = rx[11]; rx12 = rx[12]; rx13 = rx[13]; rx14 = rx[14]; rx15 = rx[15]; rx16 = rx[16]; rx17 = rx[17]; rx18 = rx[18]; rx19 = rx[19];
    rx20 = rx[20]; rx21 = rx[21]; rx22 = rx[22]; rx23 = rx[23]; rx24 = rx[24]; rx25 = rx[25]; rx26 = rx[26]; rx27 = rx[27]; rx28 = rx[28]; rx29 = rx[29];
    rx30 = rx[30]; rx31 = rx[31]; rx32 = rx[32]; rx33 = rx[33]; rx34 = rx[34]; rx35 = rx[35]; rx36 = rx[36]; rx37 = rx[37]; rx38 = rx[38]; rx39 = rx[39];
    rx40 = rx[40]; rx41 = rx[41]; rx42 = rx[42]; rx43 = rx[43]; rx44 = rx[44]; rx45 = rx[45]; rx46 = rx[46]; rx47 = rx[47]; rx48 = rx[48]; rx49 = rx[49];   
    rx50 = rx[50]; rx51 = rx[51]; rx52 = rx[52]; rx53 = rx[53]; rx54 = rx[54]; rx55 = rx[55]; rx56 = rx[56]; rx57 = rx[57]; rx58 = rx[58]; rx59 = rx[59]; 
    rx60 = rx[60]; rx61 = rx[61]; rx62 = rx[62]; rx63 = rx[63]; rx64 = rx[64]; rx65 = rx[65]; rx66 = rx[66]; rx67 = rx[67]; rx68 = rx[68]; rx69 = rx[69]; 
    rx70 = rx[70]; rx71 = rx[71]; rx72 = rx[72]; rx73 = rx[73]; rx74 = rx[74]; rx75 = rx[75]; rx76 = rx[76]; rx77 = rx[77]; rx78 = rx[78]; rx79 = rx[79]; 
    rx80 = rx[80]; rx81 = rx[81]; rx82 = rx[82]; rx83 = rx[83]; rx84 = rx[84]; rx85 = rx[85]; rx86 = rx[86]; rx87 = rx[87]; rx88 = rx[88]; rx89 = rx[89]; 
    rx90 = rx[90]; rx91 = rx[91]; rx92 = rx[92]; rx93 = rx[93]; rx94 = rx[94]; rx95 = rx[95]; rx96 = rx[96]; rx97 = rx[97]; rx98 = rx[98]; rx99 = rx[99]; 
    rx100 = rx[100]; rx101 = rx[101]; rx102 = rx[102]; rx103 = rx[103]; rx104 = rx[104]; rx105 = rx[105]; rx106 = rx[106]; rx107 = rx[107]; rx108 = rx[108]; rx109 = rx[109];
    rx110 = rx[110]; rx111 = rx[111]; rx112 = rx[112]; rx113 = rx[113]; rx114 = rx[114]; rx115 = rx[115]; rx116 = rx[116]; rx117 = rx[117]; rx118 = rx[118]; rx119 = rx[119];
    rx120 = rx[120]; rx121 = rx[121]; rx122 = rx[122]; rx123 = rx[123]; rx124 = rx[124]; rx125 = rx[125]; rx126 = rx[126]; rx127 = rx[127]; rx128 = rx[128]; rx129 = rx[129];
    rx130 = rx[130]; rx131 = rx[131]; rx132 = rx[132]; rx133 = rx[133]; rx134 = rx[134]; rx135 = rx[135]; rx136 = rx[136]; rx137 = rx[137]; rx138 = rx[138]; rx139 = rx[139];
    rx140 = rx[140]; rx141 = rx[141]; rx142 = rx[142]; rx143 = rx[143]; rx144 = rx[144]; rx145 = rx[145]; rx146 = rx[146]; rx147 = rx[147]; rx148 = rx[148]; rx149 = rx[149];   
             
 }

if (puntatore == 149){puntatore = -1 ;} 

   




///////////////////////////////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////////////////////////////
        
}

Ma a che caspita ti servono le centinaia di variabili rx999 se i dati sono già nell'array !!! :o Scusa, ma non hai capito proprio !! che te ne fai di rx52 visto che hai GIA' rx [ 52 ] ? Lavora sull'array, e togli quelle variabili E di tutti gli if ne fai uno lavorando con l'array e un indice. Poi... se non mostri tutto il codice, difficile dirti quali correzioni/migliorie fare.