Buonasera a tutti,
Ho molte lacune nella programmazione in quanto ho iniziato appena da un mese a "giocare" con l'elettronica arduino.
Ho una scheda arduino uno con sopra un lcd key shield 16x2 link link
collegato ai pin dell'lcd 1-2-3-11 c'è un driver unl2003 link
Ho provato ad impostare un programma che: se clicco il tasto "up" il motore gira di x step in una direzione; se clicco il tasto "down" gira di x step nella direzione inversa.
mi viene fuori un errore che con le mie quasi nulle conoscenze non mi permette di andare avanti.
Potete cortesemente aiutarmi?
Grazie
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
#include <Stepper.h>
const int stepsPerRevolution = 200;
Stepper myStepper(stepsPerRevolution, 1, 2, 3, 10);
#define btnSELECT 0
#define btnLEFT 1
#define btnUP 2
#define btnDOWN 3
#define btnRIGHT 4
#define btnNONE 5
int read_buttons() {
int A0 = analogRead(0);
if (A0 > 1000) return btnNONE;
if (A0 < 50) return btnRIGHT;
if (A0 < 195) return btnUP;
if (A0 < 380) return btnDOWN;
if (A0 < 555) return btnLEFT;
if (A0 < 790) return btnSELECT;
}
void setup()
{
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(10, OUTPUT);
myStepper.setSpeed(60);
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("FOCUS RAIL");
}
void loop()
{
lcd.setCursor(0,1);
lcd.print("tasto:");
while(1){
read_buttons();
switch (A0)
{
case btnUP:
{
myStepper.step(+200);
}
lcd.setCursor(0,1);
lcd.print("avanti ");
delay(200);
break;
}
case btnDOWN:
{
myStepper.step(-200);
}
lcd.setCursor(0,1);
lcd.print("indietro");
delay(200);
break;
}