URGENTE MATURITA': Problema Arduino e

Buongiorno a tutti, Avrei un quesito urgente da sottoporvi. Ho acquistato Arduino2009 per utilizzarlo per il progetto di maturità, consistente in un rilevatore di temperatura il quale manda i dati ad Arduino il quale dovrebbe mandare i valori rilevati ad un file di testo. Partiamo dal presupposto che devo ancora cercare come svolgere queste parti, e degli esempi già svolti mi risulterebbero molto utili.

Il problema di cui volevo principalmente parlarvi, tuttavia, è un altro: per provare Arduino con Processing, ho trovato un esempio consistente nell'accensione di un led. Di seguito il codice: Parte Arduino

/*Arduino Code * Switch an LED on * —————– * * turns on an LED when receiving an “A” character with any serial software * *Code modified by Francesco Saitta * * Code originally created 1 June 2005 * copyleft 2005 DojoDave * * * based on an orginal by H. Barragan for the Wiring i/o board */

int ledPin = 13; // LED connected to digital pin 13 int val = 0; void setup() { pinMode(ledPin, OUTPUT); // sets the digital pin as output Serial.begin(9600); }

void loop() { val = Serial.read(); if (val == 'A') { digitalWrite(ledPin, HIGH); // sets the LED on delay(10000); }

if (val == 'a') { digitalWrite(ledPin, LOW); // sets the LED off }

}

Parte Processing:

// Processing code // Example by Tom Igoe

import processing.serial.; import cc.arduino.;

// The serial port: Serial myPort;

// List all the available serial ports: println(Serial.list());

// Note from Tom Igoe // I know that the first port in the serial list on my mac // is always my Keyspan adaptor, so I open Serial.list()[0]. // Open whatever port is the one you're using. myPort = new Serial(this, Serial.list()[1], 9600);

// Send a capital A out the serial port myPort.write(65);

Il problema è che il Led non si accende (Sì, l'ho collegato al Pin 13). Qualcuno sa come potrei risolvere il problema?

la parte di arduino funziona elimina solo il delay(10000); che non serve e forse ti dà problemi.

se invii A maiuscolo accende il led e se invii a lo spegne

per il processing non ti so aiutare....

Sì, la parte di Arduino va, l'abbiamo provata anche senza processing. Il delay l'ho inserito per verificare l'accensione del led. E' proprio la parte di processing che vorrei capire come mai non funziona.

non vorrei dire una stupidata, ma in processing non c'è specificata quale porta seriale...

ma non è un tantino tardi per cominciare un progetto per la maturità?

Ciao

hai verificato che la porta seriale che apre Processing sia quella corretta?

myPort = new Serial(this, Serial.list()[1], 9600);

Il tutorial diceva che la suddetta è l’istruzione per riconoscere la seriale ([1])
Come potrei verificare che è quella corretta?

Per il fatto del ritardo… Concordo, ma ci son stati vari problemi in precedenza ;D

L'istruizione println(Serial.list()); produce una lista delle porte seriali.

Devi vedere in che posizione è la porta seriale dell'arduino Per esempio: se l'Arduino è la COM4 guarda il numero da parentesi quadre che lo precede(per esempio 2) e metti quello nel codice

myPort = new Serial(this, Serial.list()[2], 9600);

E non è ciò che ho fatto? Avevo a disposizione due seriali, la COM3 e la COM4. Partendo da 0 il conteggio, la COM4 (quella da me utiliizzata) risulta essere la 1. Da lì l'istruzione

myPort = new Serial(this, Serial.list()[1], 9600);

da me scritta.

hai collegato il pin + del led nel 13, e il pin - nella gnd?se no, non funzionerà mai.....il programma è giusto, l ho appena provato e funziona, modificandolo, lo sto usando con 3 led, ad intermittenza..

Massì, utilizzando solamente la parte di Arduino il led s'accende, è quando provo a "combinarlo" con Processing che non dà segni di vita...

prova ad usare questo codice per settare processing

import processing.serial.*;
Serial port;

void setup() {
  println(Serial.list());
 port = new Serial(this, Serial.list()[1], 9600);  
}

in pratica metti il settaggio della seriale nella funzione setup

Niente, anche dichiarando la Seriale come da te detto non cambia nulla. Una volta mandato in esecuzione il programma da processing il led lampeggia per un istante, per poi rimanere spento.

il led non si accende perché arduino aspetta un dato "A" sulla seriale mentre nel codice processing non ce nulla che invia questo dato