spacer.png, 0 kB

Torna indietro   Roboitalia.com - Il primo portale in Italia sulla robotica amatoriale > Robotica di base > Arduino

Rispondi
 
Strumenti discussione Modalità  visualizzazioe
  #1  
Vecchio 18-04-2013, 07.02.47
Falcon Falcon non è collegato
Robottaro senior
 
Data registrazione: 17-04-2013
Residenza: Agrigento
Messaggi: 46
Potenza reputazione: 30
Falcon E' per ora ancora un mistero
Question Aiuto per collegare Arduino1 + LCD Keypad shield e la scheda Pololu A4988

Ciao
Ho collegato Arduino 1 con il diplay LCD Keypad shield e, tramite i tasti del diplay, vorrei controllare la velocità ed il verso di rotazione (verso orario o antiorario) di un motorino bipolare a 4 fili. [Sanyo Pancake Stepper Motor: Bipolar( 200 Steps/Rev, 42x18.6mm, 5.4V, 1000mA)]. Per interfacciare arduino, collegato alla LCD Keypad shield, con il motorino vorrei usare la scheda Pololu A4988. Ho trovato, su un forum in inglese, un programmino che mi ha permesso di realizzare un menù con dei sotto menù che può controllare il verso di rotazione e la velocità del motorino. Per controllare il v erso di rotazione in senso orario vorrei usare il comando del menù principale program mode1 ,mentre il verso di rotazione in senso antiorario vorrei usare il comando del menù principale program mode2. Inoltre vorrei controllare la velocità del motorino tramite i sottomenù opzioni 1 e 2. Ho stabilito per ciascuna opzione una scala di velocità che va da 1 a 20 in modo che 1 sia uguale a 10 giri (rpm), 2 = 20 rpm ecc. ; adesso devo inserire nel programma i comandi per controllare il motore. A tale scopo avrei pensato di usare il programma tra gli esempi del programma IDE di arduino (versione 1.5.2) denominato “Stepper speed control”.Ho combinato i 2 programmi e il compilatore non ha rilevato errori. Trasferendo il programma così ottenuto ad arduino uno devo collegare i pin del display (LCD Keypad shield) e non risco a capire come fare. Ho controllato ciascuno dei 16 pin del display con un tester ed ho notato che il pin con la dicitura VSS equivale al GND , mentre i pin D0,D1,D2 e D3 sono pin digitali.Dal sito Pololu ho scaricato il file “PololuPres_V3” che mi ha permesso di capire come colleggare la scheda Pololu A4988 al motore bipolare, ma non sono riuscito a capire come posso collegare la scheda Pololu A4988 con i pin del display.
Non sono riuscito ad allegare il suddetto programmino, ma se qualcuno mi spiega come fare lo farò volentieri.
S.O.S.
Ho bisogno di aiuto.
Rispondi citando
  #2  
Vecchio 18-04-2013, 08.17.08
L'avatar di devil2003
devil2003 devil2003 non è collegato
Robottaro sostenitore
 
Data registrazione: 23-05-2004
Residenza: Napoli
Messaggi: 1,847
Potenza reputazione: 261
devil2003 La sua reputazione è oltre la sua famadevil2003 La sua reputazione è oltre la sua famadevil2003 La sua reputazione è oltre la sua famadevil2003 La sua reputazione è oltre la sua famadevil2003 La sua reputazione è oltre la sua famadevil2003 La sua reputazione è oltre la sua famadevil2003 La sua reputazione è oltre la sua fama
Predefinito

Ciao Falcon,
Io credo che dovresti collegare Arduino sia al Display che al controller A4988, il display serve solo a visualizzare cosa Arduino sta eseguendo in quel momento, cioè se hai pigiato il Pulsante 1 per il menù avanti 10 giri o hai pigiato il pulsante 2 per ferma i motori, ma il dialogo per l'invio dei comandi vero e proprio avverrà tra Arduino e il controller.
__________________
Ciao
Ciro.
__________________


Rispondi citando
  #3  
Vecchio 18-04-2013, 09.37.46
Falcon Falcon non è collegato
Robottaro senior
 
Data registrazione: 17-04-2013
Residenza: Agrigento
Messaggi: 46
Potenza reputazione: 30
Falcon E' per ora ancora un mistero
Predefinito

Caro Ciro,
Grazie per la rapidità con la quale mi Hai risposto, ma forse non sono stato molto chiaro nell'esporre il problema.
Ho provato a caricare come allegato a questa replica sia il programmino che una foto del complesso Arduino 1 - scheda LCD Keypad display per farti vedere che il collegamento si deve fare necessariamente con i pin del display, ma mi appare la scritta "Upload of file failed".
Se mi puoi suggerire come caricare la foto ed il programma per il controllo del motore forse potrai renderti conto meglio del mio problema.
Aiutami per Favore.
Falcon
Rispondi citando
  #4  
Vecchio 18-04-2013, 12.30.04
L'avatar di sergio_camici
sergio_camici sergio_camici non è collegato
Administrator
 
Data registrazione: 23-05-2002
Residenza: Binasco (MI)
Età : 55
Messaggi: 2,665
Potenza reputazione: 304
sergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua fama
Predefinito

Non è per caso che per pilotare il display hai usato i pin in comune con la seriale?
__________________
ciao
Sergio
---
Hai deciso di costruire un robot? Bene...
Cominciamo dalle brutte notizie: non e' facile...
Rispondi citando
  #5  
Vecchio 18-04-2013, 16.57.50
L'avatar di devil2003
devil2003 devil2003 non è collegato
Robottaro sostenitore
 
Data registrazione: 23-05-2004
Residenza: Napoli
Messaggi: 1,847
Potenza reputazione: 261
devil2003 La sua reputazione è oltre la sua famadevil2003 La sua reputazione è oltre la sua famadevil2003 La sua reputazione è oltre la sua famadevil2003 La sua reputazione è oltre la sua famadevil2003 La sua reputazione è oltre la sua famadevil2003 La sua reputazione è oltre la sua famadevil2003 La sua reputazione è oltre la sua fama
Predefinito

Citazione:
Orginalmente inviato da Falcon Visualizza messaggio
Caro Ciro,
Grazie per la rapidità con la quale mi Hai risposto, ma forse non sono stato molto chiaro nell'esporre il problema.
Ho provato a caricare come allegato a questa replica sia il programmino che una foto del complesso Arduino 1 - scheda LCD Keypad display per farti vedere che il collegamento si deve fare necessariamente con i pin del display, ma mi appare la scritta "Upload of file failed".
Se mi puoi suggerire come caricare la foto ed il programma per il controllo del motore forse potrai renderti conto meglio del mio problema.
Aiutami per Favore.
Falcon
Puoi gentilmente postare il codice ? Così lo possiamo discutere insieme e vedere dove è che non va.
__________________
Ciao
Ciro.
__________________


Rispondi citando
  #6  
Vecchio 21-04-2013, 08.34.10
Falcon Falcon non è collegato
Robottaro senior
 
Data registrazione: 17-04-2013
Residenza: Agrigento
Messaggi: 46
Potenza reputazione: 30
Falcon E' per ora ancora un mistero
Predefinito

Caro Sergio,
Grazie per la brutta notizia, ma me ne era già accorto.
In realtà non so se per pilotare il display ho usato i pin in comune con la seriale perché non ho ancora provato a collegare il motorino.
Infatti non riesco a capire come collegare la scheda di controllo del motore "Pololu A4988" con i pin del display e se non faccio il collegamento non posso provare il programma per controllare il motore. Vorrei allegare il programma ed una foto de mio materiale(arduino ,il Display , la scheda Pololu A4988 ed il motore),ma non riesco ad allegare niente. Se mi spieghi come fare e un poco di pazienza forse mi potresti aiutare.
Grazie
Falcon
Rispondi citando
  #7  
Vecchio 21-04-2013, 08.49.47
Falcon Falcon non è collegato
Robottaro senior
 
Data registrazione: 17-04-2013
Residenza: Agrigento
Messaggi: 46
Potenza reputazione: 30
Falcon E' per ora ancora un mistero
Smile

Caro Ciro,
Scusa se no ho risposto prima, ma ho avuto problemi con la connessione.
Ho ricavato questo programmino, combinando un programmino trovato sul forum di arduino in inglese ed un programmino, per il controllo dei motori , trovato sul sito di M. Alfieri.
Non so se funziona perché non riesco a capire come collegare i pin del display alla scheda che permette di controllare il motore.
Se lo ritieni opportuno posso postare separatamente i 2 programmi.
Grazie
Paolo




// ================================================== =================
// Example for LCD Keypad Shield from http://www.nuelectronics.com/
// -------------------------------------------------------------------
// * Modified to use a patched LiquidCrystal library
// * Alternative routine to detect keys
// ================================================== =================
#include <stdio.h>
#include <LiquidCrystal.h>
// select the pins used on the LCD panel
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
// ================================================== =================
// hardware settings: define some values used by the panel and buttons
#define rightKey 0
#define upKey 1
#define downKey 2
#define leftKey 3
#define selectKey 4
#define NUM_KEYS 5
// ================================================== =================
// Program parameters
#define minOpt1 1
#define maxOpt1 20
int valueOpt1 = 1;
#define minOpt2 1
#define maxOpt2 20
#define LED 13
// definisci i pin collegati ai pulsanti come da schema, pin 0 al senso orario e pin 1 al senso antiorario (verso orario = programMode1 digital ,verso antiorario = programMode2)
int valueOpt2 = 1;
//definisci due variabili di tipo integer rispettivamente per memorizzare il valore letto sul pin 0 e sul pin 1;
int ora = 0;
int ant = 0;
// definisci il pin che utilizzi per accendere il led, sarà il tuo indicatore di funzionamento, non è necessario collegare alcun led al pin 13 in quanto Arduino è già dotato di un led connesso a tale pin;
#define programMode1 0
#define programMode2 1
int programMode = programMode1;
boolean inMainProgram = false;
int programmSequence = 0;
#define sequenceModeSelect 0
#define sequenceModeOption 1
#define sequenceModeProgram 2
// first menu line - description of menu level
char sequenceHeader[3][17] = {"Mode select ", "Option select ", "Program start "};
// second menu line - mode select
char sequenceModes[3][17] = {" Mode 1 >", "< Mode 2 >",};
// second menu line - options settings
char sequenceOptions[3][17] = {"Option 1: ", "Option 2: "};
void setup()
{
// initial lcd display while initialize and pc detection
lcd.clear();
lcd.print("Prova ");
pinMode(LED, OUTPUT);
pinMode(programMode1, INPUT);
pinMode(programMode2, INPUT);

programmSequence = sequenceModeSelect;
inMainProgram = false;

delay(2000);
updateScreen();
}
// ================================================== =================
// main loop with new key detection
int keyEvent = -1;
int lastEvent = -1;
int countEvent = 0;
//Key message
char msgs[5][3] = {
"> ",
"^ ",
"v ",
"< ",
"* " };
void updateScreen()
{
lcd.clear();
lcd.print(sequenceHeader[programmSequence]);
lcd.setCursor(0,1);
switch(programmSequence)
{
case sequenceModeSelect:
menuModeSelect( keyEvent );
break;
case sequenceModeOption:
menuOptionSelect( keyEvent );
break;
case sequenceModeProgram:
break;
}
}
void loop()
{

int keyEvent = detectKey();
if (keyEvent >= 0)
{
switch (keyEvent)
{
case upKey:
if (!inMainProgram)
{
if (programmSequence > sequenceModeSelect)
programmSequence--;
updateScreen();
}
break;
case downKey:
if (!inMainProgram)
{
if (programmSequence < sequenceModeProgram)
programmSequence++;
updateScreen();
}
break;
case rightKey:
case leftKey:
if (!inMainProgram)
{
switch (programmSequence)
{
case sequenceModeSelect:
menuModeSelect( keyEvent );
break;
case sequenceModeOption:
menuOptionSelect( keyEvent );
break;
case sequenceModeProgram:
break;
}
}
break;
case selectKey:
lcd.setCursor(0, 1);
if (lastEvent != keyEvent)
{
lastEvent = keyEvent;
countEvent=0;
}
else
countEvent++;
lcd.print(msgs[keyEvent]);
lcd.print(countEvent);
break;
}
}
}
// ================================================== =================
// Menu tools
void menuModeSelect( int keyEvent )
{
switch (keyEvent)
{
case rightKey:
if (programMode < programMode2)
programMode++;
break;
case leftKey:
if (programMode > programMode1)
programMode--;
break;
}
lcd.setCursor(0,1);
lcd.print( sequenceModes[programMode] );
}

void menuOptionSelect( int keyEvent )
{
char cbuf[4] = " ";
lcd.setCursor(0,1);
lcd.print(sequenceOptions[programMode]);
switch (keyEvent)
{
case rightKey:
switch (programMode)
{
case programMode1:
if (valueOpt1 < maxOpt1)
valueOpt1++;
break;
case programMode2:
if (valueOpt2 < maxOpt2)
valueOpt2++;
break;
}
break;
case leftKey:
switch (programMode)
{
case programMode1:
if (valueOpt1 > minOpt1)
valueOpt1--;
break;
case programMode2:
if (valueOpt2 > minOpt2)
valueOpt2--;
break;
}
break;
}
switch(programMode)
{
case programMode1:
if (valueOpt1 > minOpt1)
lcd.print("<");
else
lcd.print(" ");
sprintf(cbuf,"%3d",valueOpt1);
lcd.print(cbuf);
if (valueOpt1 < maxOpt1)
lcd.print(">");
else
lcd.print(" ");
break;
case programMode2:
if (valueOpt2 > minOpt2)
lcd.print("<");
else
lcd.print(" ");
sprintf(cbuf,"%2d",valueOpt2);
lcd.print(cbuf);
if (valueOpt2 < maxOpt2)
lcd.print(">");
else
lcd.print(" ");
break;
}

}
// ================================================== =================
// Lcd tools
void clearLine(int line)
{
lcd.setCursor(0,line);
lcd.print(" ");
lcd.setCursor(0,line);
}
// ================================================== =================
// Define a custom char in lcd
int defineCharacter(int ascii, int *data) {
int baseAddress = (ascii * 8) + 64;
// baseAddress = 64 | (ascii << 3);
lcd.command(baseAddress);
for (int i = 0; i < 8; i++)
lcd.write(data[i]);
lcd.command(128);
return ascii;
}
// ================================================== =================
// Convert ADC value to key number
int adc_key_val[NUM_KEYS] ={ 30, 150, 360, 535, 760 };
int get_key(unsigned int input)
{
int k;
for (k = 0; k < NUM_KEYS; k++)
{
if (input < adc_key_val[k])
return k;
}
if (k >= NUM_KEYS)
k = -1; // No valid key pressed
return k;
}
// ================================================== =================
// new key detection routine, without delays!
int lastKeyEvent = 0;
int curKeyEvent = 0;
int keyToReturn = 0;
boolean keyToProcess = false;
int adc_key_in = 0;
int detectKey()
{
keyToReturn = -1;
adc_key_in = analogRead(0); // read the value from the sensor
curKeyEvent = get_key(adc_key_in); // convert into key press
if (curKeyEvent != lastKeyEvent)
{
if (!keyToProcess)
{
lastKeyEvent = curKeyEvent;
keyToProcess = true;
}
else
{
keyToReturn = lastKeyEvent;
lastKeyEvent = -1;
keyToProcess = false;
}
}
return keyToReturn;

ora = digitalRead(programMode1);
ant = digitalRead(programMode2);

if (ora == HIGH) {
digitalWrite(LED, HIGH);
delay(300);
digitalWrite(LED, LOW);
delay(300);
digitalWrite(LED, HIGH);
delay(300);
digitalWrite(LED, LOW);
}
if (ant == HIGH) {
digitalWrite(LED, HIGH);
delay(300);
digitalWrite(LED, LOW);
delay(300);
digitalWrite(LED, HIGH);
delay(300);
digitalWrite(LED, LOW);
delay(300);
digitalWrite(LED, HIGH);
delay(300);
digitalWrite(LED, LOW);
}
}
// ================================================== =================
Rispondi citando
  #8  
Vecchio 22-04-2013, 08.22.23
L'avatar di sergio_camici
sergio_camici sergio_camici non è collegato
Administrator
 
Data registrazione: 23-05-2002
Residenza: Binasco (MI)
Età : 55
Messaggi: 2,665
Potenza reputazione: 304
sergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua fama
Predefinito

metti le immagini su http://imageshack.us/ e poi indica nel messaggio il link.
__________________
ciao
Sergio
---
Hai deciso di costruire un robot? Bene...
Cominciamo dalle brutte notizie: non e' facile...
Rispondi citando
  #9  
Vecchio 22-04-2013, 11.16.58
Falcon Falcon non è collegato
Robottaro senior
 
Data registrazione: 17-04-2013
Residenza: Agrigento
Messaggi: 46
Potenza reputazione: 30
Falcon E' per ora ancora un mistero
Predefinito

Citazione:
Orginalmente inviato da sergio_camici Visualizza messaggio
metti le immagini su http://imageshack.us/ e poi indica nel messaggio il link.
Caro Sergio,
Ho fatto come gentilmente mi Hai suggerito, ma anche così non va perché appare la scritta:"Invalid File " .
Però, forse, inserendo il link per vedere la foto, le cose andranno meglio.
http://imageshack.us/photo/my-images/5/immagine1td.jpg/
Ciro, un altro utente del forum, sta cercando di aiutarmi, ma non potendo vedere la foto, non mi ha ancora dato la dritta giusta.
Spero che visualizzando la foto Tu o Ciro potrete aiutarmi a controllare il mio motore bipolare.
Grazie
Falcon

P.S.
Sotto inserisco anche il programma.
// ================================================== =================
// Example for LCD Keypad Shield from http://www.nuelectronics.com/
// -------------------------------------------------------------------
// * Modified to use a patched LiquidCrystal library
// * Alternative routine to detect keys
// ================================================== =================
#include <stdio.h>
#include <LiquidCrystal.h>
// select the pins used on the LCD panel
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
// ================================================== =================
// hardware settings: define some values used by the panel and buttons
#define rightKey 0
#define upKey 1
#define downKey 2
#define leftKey 3
#define selectKey 4
#define NUM_KEYS 5
// ================================================== =================
// Program parameters
#define minOpt1 1
#define maxOpt1 20
int valueOpt1 = 1;
#define minOpt2 1
#define maxOpt2 20
#define LED 13
// definisci i pin collegati ai pulsanti come da schema, pin 0 al senso orario e pin 1 al senso antiorario (verso orario = programMode1 digital ,verso antiorario = programMode2)
int valueOpt2 = 1;
//definisci due variabili di tipo integer rispettivamente per memorizzare il valore letto sul pin 0 e sul pin 1;
int ora = 0;
int ant = 0;
// definisci il pin che utilizzi per accendere il led, sarà il tuo indicatore di funzionamento, non è necessario collegare alcun led al pin 13 in quanto Arduino è già dotato di un led connesso a tale pin;
#define programMode1 0
#define programMode2 1
int programMode = programMode1;
boolean inMainProgram = false;
int programmSequence = 0;
#define sequenceModeSelect 0
#define sequenceModeOption 1
#define sequenceModeProgram 2
// first menu line - description of menu level
char sequenceHeader[3][17] = {"Mode select ", "Option select ", "Program start "};
// second menu line - mode select
char sequenceModes[3][17] = {" Mode 1 >", "< Mode 2 >",};
// second menu line - options settings
char sequenceOptions[3][17] = {"Option 1: ", "Option 2: "};
void setup()
{
// initial lcd display while initialize and pc detection
lcd.clear();
lcd.print("Prova ");
pinMode(LED, OUTPUT);
pinMode(programMode1, INPUT);
pinMode(programMode2, INPUT);

programmSequence = sequenceModeSelect;
inMainProgram = false;

delay(2000);
updateScreen();
}
// ================================================== =================
// main loop with new key detection
int keyEvent = -1;
int lastEvent = -1;
int countEvent = 0;
//Key message
char msgs[5][3] = {
"> ",
"^ ",
"v ",
"< ",
"* " };
void updateScreen()
{
lcd.clear();
lcd.print(sequenceHeader[programmSequence]);
lcd.setCursor(0,1);
switch(programmSequence)
{
case sequenceModeSelect:
menuModeSelect( keyEvent );
break;
case sequenceModeOption:
menuOptionSelect( keyEvent );
break;
case sequenceModeProgram:
break;
}
}
void loop()
{

int keyEvent = detectKey();
if (keyEvent >= 0)
{
switch (keyEvent)
{
case upKey:
if (!inMainProgram)
{
if (programmSequence > sequenceModeSelect)
programmSequence--;
updateScreen();
}
break;
case downKey:
if (!inMainProgram)
{
if (programmSequence < sequenceModeProgram)
programmSequence++;
updateScreen();
}
break;
case rightKey:
case leftKey:
if (!inMainProgram)
{
switch (programmSequence)
{
case sequenceModeSelect:
menuModeSelect( keyEvent );
break;
case sequenceModeOption:
menuOptionSelect( keyEvent );
break;
case sequenceModeProgram:
break;
}
}
break;
case selectKey:
lcd.setCursor(0, 1);
if (lastEvent != keyEvent)
{
lastEvent = keyEvent;
countEvent=0;
}
else
countEvent++;
lcd.print(msgs[keyEvent]);
lcd.print(countEvent);
break;
}
}
}
// ================================================== =================
// Menu tools
void menuModeSelect( int keyEvent )
{
switch (keyEvent)
{
case rightKey:
if (programMode < programMode2)
programMode++;
break;
case leftKey:
if (programMode > programMode1)
programMode--;
break;
}
lcd.setCursor(0,1);
lcd.print( sequenceModes[programMode] );
}

void menuOptionSelect( int keyEvent )
{
char cbuf[4] = " ";
lcd.setCursor(0,1);
lcd.print(sequenceOptions[programMode]);
switch (keyEvent)
{
case rightKey:
switch (programMode)
{
case programMode1:
if (valueOpt1 < maxOpt1)
valueOpt1++;
break;
case programMode2:
if (valueOpt2 < maxOpt2)
valueOpt2++;
break;
}
break;
case leftKey:
switch (programMode)
{
case programMode1:
if (valueOpt1 > minOpt1)
valueOpt1--;
break;
case programMode2:
if (valueOpt2 > minOpt2)
valueOpt2--;
break;
}
break;
}
switch(programMode)
{
case programMode1:
if (valueOpt1 > minOpt1)
lcd.print("<");
else
lcd.print(" ");
sprintf(cbuf,"%3d",valueOpt1);
lcd.print(cbuf);
if (valueOpt1 < maxOpt1)
lcd.print(">");
else
lcd.print(" ");
break;
case programMode2:
if (valueOpt2 > minOpt2)
lcd.print("<");
else
lcd.print(" ");
sprintf(cbuf,"%2d",valueOpt2);
lcd.print(cbuf);
if (valueOpt2 < maxOpt2)
lcd.print(">");
else
lcd.print(" ");
break;
}

}
// ================================================== =================
// Lcd tools
void clearLine(int line)
{
lcd.setCursor(0,line);
lcd.print(" ");
lcd.setCursor(0,line);
}
// ================================================== =================
// Define a custom char in lcd
int defineCharacter(int ascii, int *data) {
int baseAddress = (ascii * 8) + 64;
// baseAddress = 64 | (ascii << 3);
lcd.command(baseAddress);
for (int i = 0; i < 8; i++)
lcd.write(data[i]);
lcd.command(128);
return ascii;
}
// ================================================== =================
// Convert ADC value to key number
int adc_key_val[NUM_KEYS] ={ 30, 150, 360, 535, 760 };
int get_key(unsigned int input)
{
int k;
for (k = 0; k < NUM_KEYS; k++)
{
if (input < adc_key_val[k])
return k;
}
if (k >= NUM_KEYS)
k = -1; // No valid key pressed
return k;
}
// ================================================== =================
// new key detection routine, without delays!
int lastKeyEvent = 0;
int curKeyEvent = 0;
int keyToReturn = 0;
boolean keyToProcess = false;
int adc_key_in = 0;
int detectKey()
{
keyToReturn = -1;
adc_key_in = analogRead(0); // read the value from the sensor
curKeyEvent = get_key(adc_key_in); // convert into key press
if (curKeyEvent != lastKeyEvent)
{
if (!keyToProcess)
{
lastKeyEvent = curKeyEvent;
keyToProcess = true;
}
else
{
keyToReturn = lastKeyEvent;
lastKeyEvent = -1;
keyToProcess = false;
}
}
return keyToReturn;

ora = digitalRead(programMode1);
ant = digitalRead(programMode2);

if (ora == HIGH) {
digitalWrite(LED, HIGH);
delay(300);
digitalWrite(LED, LOW);
delay(300);
digitalWrite(LED, HIGH);
delay(300);
digitalWrite(LED, LOW);
}
if (ant == HIGH) {
digitalWrite(LED, HIGH);
delay(300);
digitalWrite(LED, LOW);
delay(300);
digitalWrite(LED, HIGH);
delay(300);
digitalWrite(LED, LOW);
delay(300);
digitalWrite(LED, HIGH);
delay(300);
digitalWrite(LED, LOW);
}
}
// ================================================== =================
Rispondi citando
  #10  
Vecchio 22-04-2013, 11.44.13
L'avatar di sergio_camici
sergio_camici sergio_camici non è collegato
Administrator
 
Data registrazione: 23-05-2002
Residenza: Binasco (MI)
Età : 55
Messaggi: 2,665
Potenza reputazione: 304
sergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua fama
Predefinito

Citazione:
Orginalmente inviato da Falcon Visualizza messaggio
Caro Sergio,
Ho fatto come gentilmente mi Hai suggerito, ma anche così non va perché appare la scritta:"Invalid File " .
Però, forse, inserendo il link per vedere la foto, le cose andranno meglio.
Infatti ti avevo scritto di indicare il link.
Non ripetere il codice, vedo tutti i messaggi, così rendi il tutto illeggibile.

Veniamo alle connessioni.
Da quello che vedo ha una scheda con pulsanti ed LCD che sotto monta una arduino
Il tuo problema è aggiungere quella schedina che hai messo a dx nella foto che pilota i motori?
Devi vedere quali uscite ti lascia libera la scheda LCD ed usare quelle per pilotare i motori.
http://www.dfrobot.com/image/data/DF...ield%20SCH.pdf
Da questo schema si può capire che sono liberi
D0 (tx)
D1 (rx)
D2
D3
AD1
AD2
AD3
AD4
AD5
__________________
ciao
Sergio
---
Hai deciso di costruire un robot? Bene...
Cominciamo dalle brutte notizie: non e' facile...

Ultima modifica di sergio_camici : 22-04-2013 alle ore 11.50.13
Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione
Modalità  visualizzazioe

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code è Attivato
Le smilies sono Attivato
[IMG] è Attivato
Il codice HTML è Disattivato

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
Aiuto!! Scheda controllo velocità motore con interfaccia PC PaulBlack Elettronica 19 11-01-2011 16.03.36
Aiuto motor shield MrGhost Motori e azionamenti 7 18-01-2010 09.26.21
Aiuto motor shield MrGhost Motori e azionamenti 1 17-01-2010 17.14.36
Servo controller Pololu----AIUTO!!!! Tex Willer Elettronica 10 27-04-2008 22.29.57
aiuto scheda per pic!! spago_ok Minisumo 0 22-04-2005 07.30.01


Tutti gli orari sono GMT. Adesso sono le: 23.49.02.


Basato su: vBulletin Versione 3.8.8
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Realizzazione siti web Cobaltica Foligno
spacer.png, 0 kB