giovedì 21 marzo 2013

LCD su Arduino

Per questa prova ho utilizzato un display LCD di 16 caratteri su due righe che ha connessione I2C
In realta' confrontando la foto in basso si osserva come il display LCD standard e quello I2C sono sostanzialmente uguali a meno della piccola schedina rossa che e' aggiunta nella versione I2C

In alto display con connessione standard, in basso I2C

La connessione del modello I2C avviene come al solito ai contatti SDA,SCL, VCC e GND (Pin 4, Pin5 rispettivamente per SDA ed SDC su Arduino Uno)


Per utilizzare questo componente con Arduino e' sufficiente utilizzare la libreria LiquidCrystal_I2C (attenzione ne esistono differenti versioni a seconda del controller I2C montato sul display, ho fatto diverse prove prima di trovare la versione giusta che per me e' stata questa, in caso di problemi con la libreria lo schermo lampeggia o mostra una sola riga di caratteri a blocco)

I comandi sono piuttosto limitati e semplici (per esempio SetCursor manda il cursore ad una determinata coordinata dello schermo)

Un difettto che ho potuto verificare e' il tempo di refresh piuttosto lungo del display (al di sotto dei 500 millisecondi i caratteri flickerano in modo vistoso e fastidioso)

----------------------------------------------------------------------
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{
  lcd.init();                      // initialize the lcd


 /lcd.backlight();
  lcd.print("Hello, Luca");
}

void loop()
{
}

Installare Arduino IDE su Debian

UPDATE
-------------------------------------------------------
Soluzione ultrarapida per Debian Testing
apt-get install arduino

al momento della scrittura il pacchetto corrisponde ad Arduino IDE 1.0.1 mentre sul sito
Arduino l'ultima stable e' 1.0.4
-------------------------------------------------------

Dato che era un po' di tempo che non giocavo piu' con Arduino ho dovuto reinstallare tutto il sistema di sviluppo sulla mia Debian Box


supponendo di avere gia' Java configurato e' sufficiente digitare
apt-get install openjdk-6-jre gcc-avr avr-libc avrdude

per poter compilare i programmi.
A questo punto si puo' scaricare e decomprimere il pacchetto della IDE di Arduino per iniziare a programmare.

Una accortezza: per problemi di permessi non e' possibile di default effettuare l'upload degli sketch sulla scheda perche' i permessi dell'utente normale non permettono di accedere alle porte seriali (virtuali o reali che siano)
Per operare con il proprio utente (e non come superuser) si dovranno modificare i permessi come segue

------------------------------------------------------
usermod -a -G tty yourUserName
usermod -a -G dialout yourUserName


Modulo rele' con Bluetooth

Questo modulo a 4 rele' viene normalmente associato ad Arduino ma in realta' ha ben poco da spartire le note schede opensource principalmente perche' in grado di vivere da solo senza l'appoggio a nessun altro apparato

Il sistema monta puo' essere interfacciato sia via cavo USB o via Bluetooth (in questo caso un modulo Bluetooth Bee rimuovibile che puo' essere sostituito anche da ZigBee); la selezione avviene mediante un microinterruttore a slitta parzialmente nascosto sotto il modulo Bluetooth

In entrambi i casi il sistema si interfaccia come una porta seriale a cui inviare dei caratteri che corrispondono all'apertura e chiusura dei circuiti dei rele' secondo lo schema della immagine seguente



La password per accoppiare il modulo Bluetooth e' 1234



L'alimentazione puo' derivare dalla porta microUSB oppure da una fonte esterna (jack sulla destra nella foto)
In alto il microinterruttore a slitta


Pulsante Done su EditText



Puo' essere comodo far sparire la tastiera e gestire l'evento una volta che e' stato premuto il tasto Done sulla tastiera virtuale di una Edit Text

Il trucco e' quello di attivare un OnEditorActionListener come nel breve listato che segue
---------------------------------------------------------------------------------

EditText test = (EditText) findViewById(R.id.editText1);
test.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
              if (actionId == EditorInfo.IME_ACTION_DONE) {
              Log.d("test","Premuto il tasto Done");
                    }
            return false;
               }});

martedì 19 marzo 2013

Mantenere lo schermo acceso in Android


Per mantenere lo schermo acceso in una applicazione Android si puo' aggiungere la seguente riga nella funzione OnCreate

------------------------------------
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        

Wav file in Android

Per emettere suoni in un programma Android la prima cosa da fare e' trovare un file con il suono desiderato.
Una ottima fonte di suoni gratuiti e' Freesound.org

Una volta scaricato il file wav si clicca sulla cartella /res del progetto e si crea un nuovo folder denominato raw (si avra' quindi /res/raw) dove si copia il file del suono

a questo punto si puo' inserire questa funzione (copiata da qui) dove il suono in questo caso e' chiamato beep (da notare che si omette l'estensione)
-------------------------------------------------------------

private void playAlarm() {
            MediaPlayer mp = MediaPlayer.create(this,R.raw.beep);
            mp.start();
            mp.setOnCompletionListener(new OnCompletionListener() {

                @Override
                public void onCompletion(MediaPlayer mp) {
                    mp.release();
                }

            });

giovedì 14 marzo 2013

Olivetti Da VInci DV3 PDA funzionante

Aspettavo da tempo l'acquisizione nel mio piccolo museo. Per alcune caratteristiche seguire il link