Go Down

Topic: Topic permanente di programmazione newbie (Read 123838 times) previous topic - next topic

testato

scusa ma il vlcd si comporta come un lcd vero e basta. Cioe se devi scrivere qualcosa avrai una tastiera o un tastierino sul progetto vero. Se devi selezionare un campo avrai un pulsante vero sul progetto.
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

astrobeed


@ Astro: test sul Virtual  LCD Display:
il campo di attivazione non ha alcun effetto sull'MCP2200, devo resettare manualmente il 328P


In effetti il software è pensato per attivare esplicitamente DTR, devo aggiungere pure RTS.

Quote

Appena parte vedo su ogni riga uno 0, le scritte scorrono velocissimamente ma poi ritornano tutt'e quattro a 0 (o 8 non capisco bene)
Manca un campo per inviare i comandi, p.es. quando devo scrivere i valori dei fuse o scegliere una voce da menu, mi serve, almeno nel primo caso la possibilità di editare (p.es. se sbaglio carattere del fuse).


Non è che manca un comando, mancano tutti i comandi allo stato attuale  :)
Senza la libreria vLcd,che è in fase di scrittura, il programma si limita a visualizzare tutto quello che arriva sulla seriale su tutte quattro le righe.
Eppure ero stato molto chiaro sul fatto che deve essere utilizzato abbinato alla libreria vLcd che emula al 100% la liquidcrystal e permette di utilizzare un programma scritto per andare su un  display lcd senza modificare nemmeno una riga salvo l'include della libreria e quella per l'inizializzazione.
In pratica non dovrai mandare nulla sulla seriale, ci pensa la libreria utilizzando un apposito protocollo, dovrai solo scrivere sul display.
Scientia potentia est

menniti

Sì, hai perfettamente ragione, concedimi il beneficio delle attenuanti specifiche, ieri praticamente sono stato dalle 7 di mattina ad oltre mezzanotte su quel benedetto firmware :smiley-sweat: in compenso l'ho finito; oggi cerco di introdurre l'erase e così avrò finito la prima parte e posso iniziare a buttare giù l'articolo. L'RTS ovviamente avrà una sua buona utilità su vLCD.
Manuale "Arduino e le tecniche di programmazione dei microcontrollori ATMEL"
http://www.michelemenniti.it/manuale_di_programmazione.html
http://www.michelemenniti.it/offerta.html
Articoli ElettronicaIN
http://www.michelemenniti.it/elettronica_in.html

astrobeed


Sì, hai perfettamente ragione, concedimi il beneficio delle attenuanti specifiche,


:D

Quote

ieri praticamente sono stato dalle 7 di mattina ad oltre mezzanotte su quel benedetto firmware :smiley-sweat: in compenso l'ho finito; oggi cerco di introdurre l'erase e così avrò finito la prima parte e posso iniziare a buttare giù l'articolo. L'RTS ovviamente avrà una sua buona utilità su vLCD.


Ottimo, in tarda mattinata arriva la versione del software per PC con il supporto della geometria 8x2 e l'attivazione del RTS, nel pomeriggio la release, molto alpha, 0.1 della libreria, avrà solo un paio di funzioni di base attive, giusto per fare le prime prove, e tutte le altre già definite ma inattive.
Scientia potentia est

astrobeed


Intanto vado avanti...... Ecco il prossimo problema:

-- cut --

Ho pensato di metterlo in una routine ma poi dovrei fare un menu per accedere al menu?


Il menù dovrebbe essere sempre una funzione, e i sottomenù altre funzioni, in modo che li puoi richiamare quando ti pare.
Per fare le cose fatte bene la prima cosa da inviare è la sequenza di caratteri che cancella lo schermo del terminale, e qui scatta il problema perché a seconda del tipo di emulazione cambia cosa inviare, tocca scoprire se il serial monitor prevede un comando di erase, p.e. con Hyperterminal di windows per cancellare lo schermo va inviato prima 0x27, è l'escape, e poi i caratteri "[2J" .

Scientia potentia est

amario57

Bravo Astro, appena pubblichi faccio alcune prove di test se vuoi.
Menni, ero anch'io nelle tue condizioni, programmavo anch'io , fino a dieci anni fa, con i linguaggi che hai citato, ma adesso mi è tornata la voglia e piano piano sto reimparando con IDE Arduino e Processing.
Non mollare ...., sono in attesa della tua "opera"   :smiley-eek:

astrobeed

#186
Mar 11, 2012, 09:26 am Last Edit: Mar 11, 2012, 09:39 am by astrobeed Reason: 1
Aggiornato il software per pc, scaricabile qui, con due nuove geometrie, 2x8 e 2x40 (rara ma esiste), e il controllo forzato di RTS, questo serve solo a Michele per il momento, l'ho verificato sia su una com hardware reale che su un FTDI e un MCP2200.
Da notare che il reset di Arduino quando si apre una comunicazione seriale io l'ho sempre ritenuto più una scocciatura, anzi un bug dovuto a come funziona l'autoreset, piuttosto che una cosa utile, infatti sto valutando se inserire un comando per disattivare il reset.
Scientia potentia est

astrobeed


appena pubblichi faccio alcune prove di test se vuoi.


Certamente, quando si sviluppa del software i beta tester non bastano mai, è grazie a loro che si trovano tutti i bug e si riesce a migliorare il prodotto  :)
Scientia potentia est

brainbooster

#188
Mar 11, 2012, 09:30 am Last Edit: Mar 11, 2012, 09:31 am by BrainBooster Reason: 1
@astro perchè per la cancellazione non fai una funzioncina che scrive tanti spazi quanta la geometria del display, così aggiri il problema della specificità
(soluzione porchereccia alla BB :D )

astrobeed


@astro perchè per la cancellazione non fai una funzioncina che scrive tanti spazi quanta la geometria del display, così aggiri il problema della specificità


Mi sta che stiamo facendo confusione tra il serial monitor e il display lcd, reale o virtuale che sia, attualmente Michele manda un menù sul serial monitor e ha alcuni problemi di gestione, ed è per questa cosa che gli ho consigliato di cancellarlo prima di inviare un nuovo menù, è da verificare se è possibile farlo perché il serial monitore non è una vera emulazione terminale.
Per quanto riguarda il display LCD già esiste un apposito comando per cancellarlo, "lcd.clear()".
Per vedere tutti i comandi e le funzionalità previste per i display LCD dalla liquidcrystal fate riferimento al suo reference, la libreria vLcd avrà gli stessi comandi e funzionerà allo stesso modo con la differenza che il display è virtuale sullo schermo del pc e l'impegno della seriale hardware, solo Tx, quindi volendo è possibile usare Rx per ricevere da un device esterno, per inviare i vari comandi tramite USB.
Scientia potentia est

brainbooster

#190
Mar 11, 2012, 09:44 am Last Edit: Mar 11, 2012, 09:53 am by BrainBooster Reason: 1
Pensavo fosse riferito all'lcd reale.. sorry :)
edit: menniti ma  usi un lcd seriale vero? o ricordo male

astrobeed


edit: menniti ma  usi un lcd seriale vero? o ricordo male


Mi sa tanto di si perché ha tutti i pin impegnati, infatti il suo è un caso particolare e come gestire il display reale dipende molto dal produttore/modello, non esiste uno standard ben definito.
Scientia potentia est

astrobeed

Piccolo aggiornamento, nel pomeriggio metto online la versione 0.2 beta della libreria vLcd, per il momento sono supportati i seguenti comandi:

lcd.clear();
lcd.setCursor(colonna, riga);
lcd.print(*stringa);

lcd.clear() esegue un erase di tutte le righe del display.
lcd.setCursor(colonna, riga) sposta il cursore alla posizione desiderata intesa come numero colonna (0-39) e riga (0-3).
lcd.print(*stringa) visualizza a partire dall'attuale posizione del cursore un array di caratteri (stringa) passato come puntatore.

Il nome lcd. dipende solo da come viene inizializzato il display, esempio pratico di utilizzo in base all'esempio hello world della liquidcrystal.

Code: [Select]

// include the library code:
#include <vLcd.h>

// initialize the library
vLcd lcd();  // non serve indicare i pin collegati al display

stringa[20] = "Hello world 2";

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(20, 2); // inizializza la libreria, inclusa la seriale, e la geometria del display

  lcd.clear(); // erase lcd
  lcd.setCursor(0,0); // posiziona il cursore sulla prima riga colonna 0
  lcd.print("hello, world!"); // scrive hello world sul display
  lcd.setCursor(0, 1); // posiziona il cursore sulla seconda riga colonna 0
  lcd.print(stringa); // scrive "hello world 2" sul display
}

void loop()
{
 
}

Scientia potentia est

brainbooster

in effetti, lato hw sono belli semplici da iplementare, ma io ne ho trovati alcuni con una sintassi assurda (vedi flamingo eda e simili) che dal lato sw incasinano un pò la vita.
complimenti per il lavoro astro, sono curioso di vedere il prodotto finale :)
a quando il vKeypad?  :smiley-mr-green:

amario57

Ottimo lavoro Astro, cosa dici Brain dell'utilizzo anche come strumento didattico ??
Attendo con "trepidazione" la libreria   :smiley-eek:

Go Up