Informazione e possibile trasformare un linguaggio c in un c/c++ ?

Salve a tutti facendo alcune ricerche ho scoperto che il mio sainsmart non e arduino e quindi e programabile solo in c/c++ qualcuno mi sa dire se e possibile convertirli ? e in che modo ? grazie in anticipo :slight_smile:

Te lo dico alla romana ... ma de' che stai a parla' ???

Ci vuoi dire di che board parli ? Ci dai un link ? Cosa pensi che abbiamo la palla di vetro ??? :smiley:

Guglielmo

gpb01:
Te lo dico alla romana ... ma de' che stai a parla' ???

+1 :smiley:
Non si capisce un antani :slight_smile:

https://www.google.it/search?q=sainsmart+uno+r3&bav=on.2,or.r_cp.r_qf.&bvm=bv.51156542,d.Yms,pv.xjs.s.en_US._-554IbEZc0.O&biw=1280&bih=880&um=1&ie=UTF-8&hl=it&tbm=isch&source=og&sa=N&tab=wi&ei=ufAZUsjaBonatAbxx4DYCQ#facrc=_&imgrc=WQRgRLapPgmw4M%3A%3BjEXsgdD9MaSAnM%3Bhttp%253A%252F%252Fupload.wikimedia.org%252Fwikipedia%252Fcommons%252F6%252F62%252FSainSmart_UNO_R3.JPG%3Bhttp%253A%252F%252Fcommons.wikimedia.org%252Fwiki%252FFile%253ASainSmart_UNO_R3.JPG%3B520%3B520
questa e la mia board la maggiorparte delle librerie di arduino non me le legge sul sito mi dice che il linguaggio e il c/c++...

waread90:
questa e la mia board la maggiorparte delle librerie di arduino non me le legge sul sito mi dice che il linguaggio e il c/c++...

E' solo l'ennesimo clone di Arduino, probabilmente fatto meglio di quelli cinesi low cost, non esiste che non puoi usare le librerie di Arduino visto che l'ambiente di sviluppo è sempre l'ide di Arduino.

astrobeed:
E' solo l'ennesimo clone di Arduino, probabilmente fatto meglio di quelli cinesi low cost, non esiste che non puoi usare le librerie di Arduino visto che l'ambiente di sviluppo è sempre l'ide di Arduino.

Cioè, detto in parole povere, in Arduino programmi in C/C++ .
Non sembra perchè l'IDE Arduino nasconde alcune cose, ma sotto si usa il compilatore gcc perciò Arduino si PROGRAMMA in C/C++.

Ecco una bella info da mettere nella famosa FAQ list che qualcuno voleva fare:
in Arduino programmi in C/C++

Solo la Netduino e i suoi cloni non sono compatibili con Arduino framework, hanno il loro framework in C#.
http://it.wikipedia.org/wiki/NETduino
La tua scheda è Arduino compatibile.

Scusa è, ma il link al sito della Saintsmart dove quella board è descritta ti pesava metterlo ??? Pensi che vediamo come è fatta una scheda guardando le foto ??? ... non credi che è meglio se possiamo leggerne le caratterstiche tecniche ???

Comunque ... ad occhio ... dovrebbe essere QUESTA ... confermi ?

Se SI, stai sbagliado qualche cosa tu perché quella scheda dovrebbe essere compatibile con Arduino UNO e le relative librerie.

Guglielmo

Edit : Astro e Nid mi hanno preceduto XD

waread90:
... la maggiorparte delle librerie di arduino non me le legge sul sito mi dice che il linguaggio e il c/c++...

Un'altra cosa ... ma tu le librerie le metti al posto giusto ??? :roll_eyes:

Guglielmo

Guglielmo si e quella la mia board .
a Allora tanto per iniziare sono inesperto a linguaggio c e qualsiasi cosa lo componga.
Per quanto riguarda la compatibilita non saprei cosa rispondervi, so solo che quando metto un codice in c non mi va, se lo metto in c/c++ parte miracolosamente.
Il problema per me nasce nel generare codici, sostituirli e tappezzare non e difficile, ma a generarli e un bel problema.
Vi faccio un esempio questo e un codice in c/c++ di un countup di un display a 7 segmenti 4 digit se vorrei fare un countdown che arriva a 0 e si ferma come dovrei fare?

int a = 1;
int b = 2;
int c = 3;
int d = 4;
int e = 5;
int f = 6;
int g = 7;
int p = 8;

int d4 = 9;
int d3 = 10;
int d2 = 11;
int d1 = 12;

long n = 0;
int x = 100;
int del = 55; 
 
void setup()
{
  pinMode(d1, OUTPUT);
  pinMode(d2, OUTPUT);
  pinMode(d3, OUTPUT);
  pinMode(d4, OUTPUT);
  pinMode(a, OUTPUT);
  pinMode(b, OUTPUT);
  pinMode(c, OUTPUT);
  pinMode(d, OUTPUT);
  pinMode(e, OUTPUT);
  pinMode(f, OUTPUT);
  pinMode(g, OUTPUT);
  pinMode(p, OUTPUT);
}
 
void loop()
{
  clearLEDs();
  pickDigit(1);
  pickNumber((n/x/1000)%10);
  delayMicroseconds(del);
 
  clearLEDs();
  pickDigit(2);
  pickNumber((n/x/100)%10);
  delayMicroseconds(del);
 
  clearLEDs();
  pickDigit(3);
  dispDec(3);
  pickNumber((n/x/10)%10);
  delayMicroseconds(del);
 
  clearLEDs();
  pickDigit(4);
  pickNumber(n/x%10);
  delayMicroseconds(del);
 
  n++;
 
  if (digitalRead(13) == LOW)
  {
    n = 0;
  }
}
 
void pickDigit(int x) 
{
  digitalWrite(d1, HIGH);
  digitalWrite(d2, HIGH);
  digitalWrite(d3, HIGH);
  digitalWrite(d4, HIGH);
 
  switch(x)
  {
  case 1: 
    digitalWrite(d1, LOW); 
    break;
  case 2: 
    digitalWrite(d2, LOW); 
    break;
  case 3: 
    digitalWrite(d3, LOW); 
    break;
  default: 
    digitalWrite(d4, LOW); 
    break;
  }
}
 
void pickNumber(int x)
{
  switch(x)
  {
  default: 
    zero(); 
    break;
  case 1: 
    one(); 
    break;
  case 2: 
    two(); 
    break;
  case 3: 
    three(); 
    break;
  case 4: 
    four(); 
    break;
  case 5: 
    five(); 
    break;
  case 6: 
    six(); 
    break;
  case 7: 
    seven(); 
    break;
  case 8: 
    eight(); 
    break;
  case 9: 
    nine(); 
    break;
  }
}
 
void dispDec(int x)
{
  digitalWrite(p, LOW);
}
 
void clearLEDs()
{
  digitalWrite(a, LOW);
  digitalWrite(b, LOW);
  digitalWrite(c, LOW);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
  digitalWrite(p, LOW);
}
 
void zero()
{
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, LOW);
}
 
void one()
{
  digitalWrite(a, LOW);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
}
 
void two()
{
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, LOW);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, LOW);
  digitalWrite(g, HIGH);
}
 
void three()
{
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, HIGH);
}
 
void four()
{
  digitalWrite(a, LOW);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
}
 
void five()
{
  digitalWrite(a, HIGH);
  digitalWrite(b, LOW);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, LOW);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
}
 
void six()
{
  digitalWrite(a, HIGH);
  digitalWrite(b, LOW);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
}
 
void seven()
{
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
}
 
void eight()
{
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
}
 
void nine()
{
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, LOW);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
}

Allora,
prima di tutto, cortesemente, modifica il post e cambia il tag QUOTE con il tag CODE (quello che puoi avere con il bottoncino #) che è il più appropriato per il codice.

Poi ... quel programma non è veramente il massimo e può essere molto ottimizzato come occupazione di memoria ed efficienza, comunque ... se per salire parti con n = 0 e poi fai n++, per scendere partirai da n = 9 e farai n-- (n++ incremeta di uno, n-- decrementa di uno). Ovviamente dovrai aggiustare i vari test per evitare che n vada sotto zero :wink:

Guglielmo

il countdown parte pero non si ferma a 0 ce qualcosa che posso fare ?

waread90:
il countdown parte pero non si ferma a 0 ce qualcosa che posso fare ?

La mia frase "Ovviamente dovrai aggiustare i vari test per evitare che n vada sotto zero" significava proprio questo ... devi aggiungere un qualche if e decidere cosa fare quando arriva a zero (es. ripartire da 9)

Guglielmo

waread90:
Salve a tutti facendo alcune ricerche ho scoperto che il mio sainsmart non e arduino e quindi e programabile solo in c/c++ qualcuno mi sa dire se e possibile convertirli ? e in che modo ? grazie in anticipo :slight_smile:

ecco vedi ]:smiley: devi ancora "scartarlo" e già da problemi, buttalo via e prendi l'originale,

se no ad ogni "Problema" non sai se sei tu o lui

la sua scheda non e' illegale, e' solo un clone ed anche migliorato di arduino, ha 8 pin analogici (328 smd) e l'alimentazione e' settabile a 5V e 3,3V

a me sembra che deve solo imparare a programmare, e' un mestiere, studia i libri di programmazione, iscriviti ad una scuola tecnica e poi scegli una bella universita'. Auguri :slight_smile:

Per favore cambia il titolo a questo topic, non si puo' leggere

Non Ti serve un diploma di laurea per poter programmare Arduino. Segui qualche tutorial o comprati un libro.
Ciao Uwe

Tutte le strade portano a Roma :slight_smile:

p.s. Uwe puoi dare uno sguardo ai PM, ti ho chiesto un parere sulla burden, thanks :wink:

Sopratutto comincia con gli sketch di esempio dell'IDE che sono commentati e molto meno incasinati di quello che hai postato tu.