Ciao a tutti,
come certi di voi sapranno sto progettando una mini serra, e man mano che mi arrivano i componenti monto tutto.
E' appena arrivato un joystick (http://www.ebay.it/itm/151755008916?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT), del quale riesco a far funzionare perfettamente la parte analogica, ma non proprio il pulsante incorporato.
logicamente è un ingresso digitale, che inizialmente ho collegato direttamente al pin 2, senza ottenere nessun cambiamento sul monitor seriale una volta pigiato.
Collegango una resistenza di pull-up da 10Kohm a 5V funziona, ma segna 1 quando non è premuto, 0 quando invece lo tengo premuto... qualcuno ha idea del perchè? E poi, perchè quella resistenza? A logica mi verrebbe da collegarlo direttamente al pin digitale in ingresso all'arduino...
Ecco lo sketch:
#include <Wire.h> // Comes with Arduino IDE
#include <LCD.h>
#include <LiquidCrystal.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// JOYSTICK
#define asseX A0
#define asseY A1
#define butt 2
// FINE jOYSTICK
void setup()
{
// MONITOR SERIALE
Serial.begin(9600); // Used to type in characters
// FINE MONITOR SERIALE
//JOYSTICK
pinMode( asseX,INPUT );
pinMode( asseY,INPUT );
pinMode( butt,INPUT );
// FINE jOYSTICK
// LCD
lcd.begin(20,4); // initialize the lcd for 20 chars 4 lines and turn on backlight
// ------- Quick 3 blinks of backlight -------------
for(int i = 0; i< 3; i++)
{
lcd.backlight();
delay(250);
lcd.noBacklight();
delay(250);
}
lcd.backlight(); // finish with backlight on
//-------- Write characters on the display ----------------
// NOTE: Cursor Position: CHAR, LINE) start at 0
lcd.setCursor(3,0); //Start at character 4 on line 0
lcd.print("Hello, world!");
delay(1000);
lcd.setCursor(2,1);
lcd.print("From Me");
delay(1000);
lcd.setCursor(0,2);
lcd.print("20 by 4 Line Display");
lcd.setCursor(0,3);
delay(2000);
// Wait and then tell user they can start the Serial Monitor and type in characters to
// Display. (Set Serial Monitor option to "No Line Ending")
lcd.setCursor(0,0); //Start at character 0 on line 0
lcd.print("Start Serial Monitor");
lcd.setCursor(0,1);
lcd.print("Type chars 2 display");
// FINE LCD
}
void loop()
{
Serial.print( "Asse X: " );
Serial.print( analogRead( asseX ) );
Serial.print( " Asse Y: " );
Serial.print( analogRead( asseY ) );
Serial.print( " Butt A: " );
Serial.print( digitalRead( butt ) );
Serial.print( "\n" );
delay( 300 );
}