electronista.ro blog Just another WordPress weblog

28Feb/100

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.

  1. Download si uploadeaza codul pentru arduino
  2. 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
Tagged as: No Comments
25Feb/100

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.

  1. instalati libraria lcd-ului LCD4Bit_mod
  2. download arduino sketch
  3. compilaza si uploadeaza schita arduino
  4. download LCD smartie
  5. setare LCD smartie

Cititi tot tutorialul pe: nuelectronics.com

Tagged as: No Comments
17Feb/100

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

Tagged as: No Comments