Da ansi c ad arduino

ciao a tutti , stavo cercando di traslare queste 4 righe di codice da dal c al c per arduino pero' la sintassi per la serial.print e fscan mi sono arenato....

/* read n value into array calculate reverse array and
   display all data in reverse order  
*/

void Setup()
{
   int i,n,a[100],temp;

   Serial.print("Total value in the array\n");
   //scanf("%d",&n);
   Serial.read("%d",&n);
   Serial.print("Enter %d value \n",n);
   for(i=0;i<n;i++)
      scanf("%d",&a[i]);
   Serial.print("\nOriginal List is:\n");
   for(i=0;i<n;i++)
       Serial.print("%5d",a[i]);
   
   for(i=0;i<n/2;i++)	/* Reverse Logic */
   {
      temp = a[i];
      a[i]=a[n-1-i];
      a[n-1-i] =temp;
   }
   Serial.print("\nReverse List is:\n");
   for(i=0;i<n;i++)
       Serial.print("%5d",a[i]);
}

void loop() {

}

Non esiste il C per Arduino visto che usa il C/C++, però se usi istruzioni che fanno parte di wiring, il framework per C usato da Arduino, devi usare la corretta sintassi, non puoi usare la sintassi della (s)printf() nella serial.print() e nemmeno nella serial.read().
Puoi formattare una stringa di caratteri usando la sprintf() e poi la invii sulla seriale con la serial.print().

Aggiungo inoltre che stai parlando di codice C per un PC con video e tastiera, quindi hai output su video e input da tastiera.
Arduino NON ha tastiera e monitor. Puoi eventualmente "dialogare" tramite Monitor Seriale (seriale) ma non è proprio la stessa cosa.

ok sto scremando al massimo per poi ricostruire il codice ma anche cosi' mi va in errore.....

void Setup(){
   
   Serial.begin(9600);
   int i,n,a[100],temp;
   for(i=0;i<n/2;i++)  /* Reverse Logic */
   {
      temp = a[i];
      a[i]=a[n-1-i];
      a[n-1-i] =temp;
   }
   Serial.println("Reverse List is:");
   for(i=0;i<n;i++)
   {    
     Serial.println(i);
   }

void loop() {
}

Usa il CTRL+T dentro al IDE che ti aiuta indentando.
Manca la graffa di chiusura del setup() ed inoltre setup DEVE esse scritto tutto in minuscolo.

Poi la variabile n viene segnalata come mai inizializzata.
manca un
n=50; o qualcosa di simile

nid69ita:
Manca la graffa di chiusura del setup() ed inoltre setup DEVE esse scritto tutto in minuscolo.
Usa il CTRL+T dentro al IDE che ti aiuta

niente..... niente da fare......

void setup() 
{ int i, n, a[100], temp;
  delay(1000);
  Serial.begin(9600);
  n=50;            // serve dargli un valore !!
  for (i = 0; i < n / 2; i++) /* Reverse Logic */
  {
    temp = a[i];
    a[i] = a[n - 1 - i];
    a[n - 1 - i] = temp;
  }
  Serial.println("Reverse List is:");
  for (i = 0; i < n; i++)
  {
    Serial.println(i);
  }
}

void loop() {
}

si infatti, era la S maiuscola del setup che rognava....... >:( >:( >:( >:(

superciccio:
si infatti, era la S maiuscola del setup che rognava....... >:( >:( >:( >:(

... ma va ? ? ?

Da che mondo è mondo il 'C' è "case-sensitive" e quindi, se la funzione richiamata dal main() si chiama setup() ... ovviamente NON gli va bene se gli si da il nome Setup() :smiley:

In compenso ... dentro alla setup() ... si può richiamare una funzione scritta dall'utente che si chiama Setup() ...
... tanto per confondere le idee a chi legge il codice :grin: :grin: :grin:

Guglielmo

gpb01:
... ma va ? ? ?

Da che mondo è mondo il 'C' è "case-sensitive" e quindi, se la funzione richiamata dal main() si chiama setup() ... ovviamente NON gli va bene se gli si da il nome Setup() :smiley:

In compenso ... dentro alla setup() ... si può richiamare una funzione scritta dall'utente che si chiama Setup() ...
... tanto per confondere le idee a chi legge il codice :grin: :grin: :grin:

Guglielmo

si certo case sensitive, pero' non l'ho notato e l'errore che mi dava non riuscivo a risalire la s incriminata.
vabbe' cmq, adesso sta filando tutto liscio
grazie a tutti.

Impara a leggere quello che ti segnala il compilatore. Lo diceva chiaramente che mancava la setup()
D:\Elettronica.../main.cpp:43: undefined reference to `setup'

ok ok grazie a tutti ho capito mi copro il capo di cenere.......

superciccio:
ok ok grazie a tutti ho capito mi copro il capo di cenere.......

Perché mai ? Sbagliando si impara e nessuno nasce "imparato" :wink: