Visual basic .net 2008 -> arduino LCD
Proiectul acesta arata cat la suta este folosit din procesor. Este facut in visual basic .net 2008 si foloseste codul pentru arduino scris mai devreme care afiseaza direct pe LCD tot ce primeste via portul serial. Am schimbat doar viteza de comunicare de la 9600 bounds la 115200 bounds.
- Download si uploadeaza codul pentru arduino
- Download codul sursa visual basic (va trebuie visual basic express pentru a-l rula). Daca nu aveti Visual Basic-ul instalat, aici este aplicatia gata compilata si pregatita pentru rulare.
'Clasa visual basic .net 2008
'pentru comunicarea seriala cu arduino
'TODO: inca nu stie sa primeasca info
' de la arduino
'by electronista.ro
Imports System
Imports System.IO.Ports
Public Class arduinoSerial
Dim comPort_ As String = "COM3"
Dim comSpeed_ As Integer = 9600
Dim WithEvents Port As SerialPort
Public Property comPort()
Get
Return comPort_
End Get
Set(ByVal value)
comPort_ = value
End Set
End Property
Public Property comSpeed()
Get
Return comSpeed_
End Get
Set(ByVal value)
comSpeed_ = value
End Set
End Property
Public Sub open()
Port = New SerialPort(comPort_, comSpeed_, Parity.None, 8, StopBits.One)
Port.Open()
End Sub
Public Sub close()
Port.Close()
Port.Dispose()
End Sub
Public Function send(ByVal text As String)
Try
Port.Write(text)
Return True
Catch ex As Exception
Return "error: " & ex.Message
End Try
End Function
End Class
LCD smartie + LCD shield
LCD smartie este un program pentru afisarea pe LCD, acesta poate afisa frecventa curenta a procesorului, cpu load-ul, piesa curenta din winamp etc... Din pacate ultima versiune a programului este din 2007 si numai versiunea 5.4 merge pe windows 7/vista (versiunea 5.4.1 nu merge).
Programul simuleaza pe arduino un LCD de tipul Matrix Orbital, care este compatibil cu softul LCD smartie, acesta comunicand cu lcd-ul via portului com virtual.
- instalati libraria lcd-ului LCD4Bit_mod
- download arduino sketch
- compilaza si uploadeaza schita arduino
- download LCD smartie
- setare LCD smartie
Cititi tot tutorialul pe: nuelectronics.com
Arduino – comunicare PC -> lcd shield
Codul de mai jos afiseaza pe lcd tot ce primeste de pe portul serial. La sfarsitul primei linii coboara cursorul pe randul al doilea iar cand si pe acest rand ajunge la sfarsit, muta cursorul de la inceput pe primul rand. Pentru a trimite informatii spre lcd se poate folosi serial monitor-ul din IDE-ul arduino.
Pentru a sterge tot ce este pe lcd trimiteti caracterul "~" (shift + tasta de deasupra la TAB).
Arduino foloseste libraria LCD4Bit_mod pentru a comunica cu LCD shield-ul, puneti continutul arhivei in arduino folder\libraries.
ATENTIE: uneori apar probleme cu prima linie din codul acesta, probabil de la cum sunt codate caracterele de wordpress/chrome etc... Daca va da erori incercati sa stergeti prima linie dupa care dati click in meniul pe sketch-> Import library... -> LCD4Bit_mod SAU download sketch.
#include
LCD4Bit_mod lcd = LCD4Bit_mod(2);
char inByte; //caracterul curent de pe serial
void setup() {
//initializam lcd-ul si portul serial
lcd.init();
lcd.clear();
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
//citim caracterul
inByte = Serial.read();
Serial.println(inByte);
//afisam caracterul pe lcd
displayContChar(inByte);
}
}
/*
* Display on lcd
* Copyright electronista.ro
*/
int displayCurPosX = 0; //coloanele de la 0
int displayCurPosY = 1; //randurile incep de la 1
char convertToStr[2] = "0"; //pt conversia char to string
void displayContChar(char mychar) {
if (mychar == '~') {
//reseteaza totul cand primim ~
lcd.clear();
displayCurPosX = 0;
displayCurPosY = 1;
return;
}
//convertim char to char array
convertToStr[0] = mychar;
if (displayCurPosX == 16) {
//0 - 15 digits - am ajuns la sf
displayCurPosX = 0;
if (displayCurPosY == 1) {
//mergem pe linia 2
displayCurPosY = 2;
lcd.cursorTo(displayCurPosY, displayCurPosX);
} else {
//revenim pe prima linie
displayCurPosY = 1;
lcd.cursorTo(displayCurPosY, displayCurPosX);
}
}
//dupa ce am setat cursorul mai sus
//afisam caracterul
lcd.printIn(convertToStr);
displayCurPosX ++;
}
// bug cu js code highlight



