Show Posts
Pages: [1]
1  International / Software / Re: RIcezione variabili da seriale, strano problema oltre le 3 cifre. on: April 10, 2013, 03:59:24 am
Una luce nel buio! perché anche cercando su internet non si trovano ste cose?
Io non sapendo ne leggere ne scrivere (come dicono dalle mie parti) ho raccolto ogni cifra ricevuta in un array, dall'ultima alla prima, poi per ricostruire il numero ho usato la notazione esponenziale, quindi le unità sono moltiplicate per 10^0 (cioè 1), le decine per 10^1 (cioè 10), le centinaia per 10^2 (cioè 100) e così via...
Poi sommato i vari numeri che dovrebbero rendere il numero ricevuto, come infatti avviene, ma con il fastidioso problema delle unità scartate, sarebbe interessante capire perché non funziona.
Comunque il tuo programma è sbagliato, perché stampa i numeri al contrario, dato che sul mio era invertito il ciclo for per la ricezione, ecco il programma giusto:
Quote
int X= 0;
int count= 0;
int Nbyte= 0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  if(Serial.available()> 0){
    Nbyte= Serial.available();
    X= 0;
    char rxX[Nbyte];
    for(count=0; count<Nbyte; count++){
      rxX[count]= (Serial.read());
    }
    X= atoi(rxX);
    Serial.println(X);
  }  
  delay(500);
}
Ti ringrazio tantissimo, perché sono due settimane che provo e riprovo e cerco invano su internet, sei stato veramente d'aiuto. un ultima domanda, non è che avresti un veloce tutorial su come gestire le classi su arduino?

Grazie ancora,
Andrea.
2  International / Software / RIcezione variabili da seriale, strano problema oltre le 3 cifre. on: April 10, 2013, 03:14:00 am
Ciao a tutti, sto sviluppando un progetto scolastico che prevede il controllo di un robot cartesiano, mosso da motori paso-passo, da parte di Arduino, che dovrebbe ricevere le coordinate via seriale da un PC e calcolare gli spostamenti da fare.
Quando ho iniziato a scrivere il programma ho pensato prima di tutto di fare la parte seriale, che avendo già utilizzato diverse volte questa funzione mi sembrava più semplice. Però sono incappato subito in un problema, cioè che Arduino riceve un solo byte alla volta e quindi, per ricostruire il numero a più cifre inviato dal computer ho scritto il seguente programma:
Quote
int X= 0;
int count= 0;
int Nbyte= 0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  if(Serial.available()> 0){
    Nbyte= Serial.available();
    X= 0;
    int rxX[Nbyte];
    for(count=(Nbyte-1); count>=0; count--){
      rxX[count]= (Serial.read()-'0');
    }
    for(count=0; count<Nbyte; count++){
      X= X+((rxX[count])*(pow(10,count))); 
    }
    Serial.println(X);
  }  
  delay(500);
}


Teoricamente dovrebbe funzionare, ma si ripresenta a ogni tentativo un fastidiosissimo problema, se mando un numero a 2 cifre, ad esempio 99, Arduino mi restituisce correttamente 99, mentre se lo mando a più cifre, ad esempio 999, o 9999 mi restituisce rispettivamente 998 e 9997, cioè sembra togliere un unità ogni cifra in più, quando si superano le tre.
Ho controllato e ricontrollato, fatto mille tentativi per risolvere ma non riesco a uscirne, per piacere aiutatemi a capire dov'è l'errore, e se addirittura il metodo non va bene mostratemi quello giusto.

Grazie dell'attenzione,
Andrea.
3  International / Generale / Arduino su breadboard e connessione con pc on: March 07, 2012, 12:05:33 pm
Salve a tutti, ho da poco imparato le basi di arduino, e per l'adempimento del mio progetto per l'esame ho acquistato altri 2 microcontrollori atmega 328, sui quali ho caricato il bootloader arduino dopo alcune grane.
Siccome ho bisogno che almeno uno di loro funzioni su breadboard assieme all'arduino UNO in mio possesso per fare delle prove riguardanti la comunicazione seriale tra i due sto cercando un metodo per programmare l'atmega sulla breadboard che mi consenta anche la comunicazione seriale con il pc.
Non so se sono riuscito a spiegarmi bene comunque ho pensato di provare con un convertitore rs232-rs485 da collegare direttamente al pc, può andare bene o ci sono altri metodi migliori (e poco costosi)?

Grazie dell'attenzione,
Andrea.
4  International / Generale / Esame con arduino on: December 10, 2011, 07:03:17 am
Ciao a tutti, sono Trentin Andrea, studente di elettronica alle superiori e sono nuovo del forum e anche di arduino.
Vi scrivo perché sto pensando di usare Arduino per il mio esame di maturità. Premetto che conosco solo i PIC come microcontrollori.
L'intenzione sarebbe di realizzare una rete domotica con tre-quattro nodi, ognuno con un Arduino. Pensavo di connetterli tra loro in via seriale, magari con l'RS485, che finora mi è sembrato lo standard migliore.
Vorrei realizzare almeno un comando, un attuatore, alcuni sensori, e per finire una centralina. Questo riguarda la pratica, poi nella teoria potrei inserirci alcuni schemi e programmi per altri dispositivi, senza realizzarli tutti, dato che sarebbe economicamente impegnativo.
La gestione del bus dovrebbe essere multimaster, in modo che ciascun dispositivo possa comunicare con tutti gli altri, e saranno tutti gestiti a loro volta dalla centralina, ove necessario.
Vorrei sentire i vostri pareri, e sapere se avete consigli, soprattutto riguardo al bus, al quale non so che protocollo associare, che magari abbia una semplice gestione in arduino.

Grazie dell'attenzione,
Andrea.
Pages: [1]