Raspberry Pi + Arduino Serial met LCD-scherm (4 / 6 stap)

Stap 4: De Code & hoe het werkt


Zoals u kunt zien in de beelden en de code die ik heb toegevoegd dat twee meer draden van de arduino aan de LCD dit eigenlijk controle het LCD-contrast in plaats van met behulp van een potentiometer (potmeter) en de helderheid van het scherm met PWM.

De arduino code luistert naar tekenreeksen komen via de seriële poort, verwijdert de eerste twee tekens die ik ervoor gekozen om dat de positie waar de tekenreeks op het LCD-scherm en de rest te schrijven zou de tekenreeks moet worden uitgevoerd.

String Format: ##String (want dit een 16 x 2 LCD is het eerste getal kan variëren van 0-15 X-positie en het tweede getal van 0 naar 1 Y-positie)

De python script is zo geschreven dat het voegt altijd de coördinaten voor de tekenreeks die ik schreef een functie waarin twee argumenten het eerste argument is de tekenreeks die wordt weergegeven om 00 (eerste regel van de lcd) en op 01 (tweede regel van de lcd)

De opdrachten om de Raspberry Pi Systeeminfo in de python script vond ik ze online bij Klik hier

Dit is de python-functie die de snaren aan de arduino stuurt:

 def serialClear(): ser.write("00clr") 
 def serialWrite(Line1, Line2): serialClear(); //clear LCD time.sleep(betWait) //wait a bit for stringRead timeout ser.write("00"+Line1) //send first line time.sleep(betWait) //wait a bit for stringRead timeout ser.write("01"+Line2) //send second line 

De Arduino Code (bestand ook als bijlage verzonden)

 #include <LiquidCrystal595.h> // include the libraryLiquidCrystal595 lcd(7,8,9); // datapin, latchpin, clockpin int contrastPin = 6; int brightnessPin = 10; int contrast = 135; int brightness = 255; String input = ""; String stringRec = ""; String pos = ""; int posX = 0; int posY = 0;void setup() { pinMode(contrastPin,OUTPUT); pinMode(brightnessPin,OUTPUT); lcd.begin(16,2); // 16 characters, 2 rows lcd.clear(); analogWrite(contrastPin, contrast); analogWrite(brightnessPin, brightness); Serial.begin(9600); Serial.setTimeout(500); }void loop() { if(Serial.available() > 0){ input = Serial.readString(); pos = input.substring(0,2); posX = pos.substring(0,1).toInt(); posY = pos.substring(1,2).toInt(); stringRec = input.substring(2); /*Serial.println("String: "); Serial.println(stringRec); Serial.println(); Serial.println("Pos: "); Serial.print(posX); Serial.print(" "); Serial.print(posY); Serial.println();*/ } if(stringRec.equals("clr")){ lcd.clear(); stringRec = ""; } lcd.setCursor(posX,posY); lcd.print(stringRec); } 


De volledige Python Code (bestand ook als bijlage verzonden)

importeren van os, urllib, json, serial, tijd #start seriële aansluiting met arduino ser = seriële. Seriële ('/ dev/ttyACM0', 9600) betWait = 1 #wait voordat de tweede tekenreeks niet lager dan 1 gaan vanwege arduino StringRead timeout sleepTime = 3 #wait voordat u volgende batch van info # terug CPU temperatuur als een karakter string def getCPUtemperature(): res = os.popen ("vcgencmd measure_temp').readline() return(res.replace("temp=","").replace("'C\n","")) # terug RAM informatie (eenheid = kb) in een lijst # Index 0 : total RAM # Index 1: RAM gebruikt # Index 2: gratis RAM def getRAMinfo(): p = os.popen('free') ik = 0 terwijl 1: ik = i + 1 lijn = p.readline() als ik == 2: return(line.split()[1:4]) # Return % van CPU gebruikt door gebruiker als een karakter string def getCPUuse(): retourneren (str (os.popen ("top - n1 | awk ' / Cpu\(s\): / {afdrukken $2}'") .readline () .strip (\))) # retourinformatie over schijfruimte als een lijst (eenheid opgenomen) # Index 0: total schijfruimte # Index 1: gebruikte schijfruimte # Index 2: resterende schijfruimte # Index 3: percentage van de schijf gebruikt def getDiskSpace(): p = os.popen (" df -h / ") ik = 0 terwijl 1: ik = i + 1 lijn = p.readline() als ik == 2: return(line.split()[1:5]) #Get externe IP-def getIP() : gegevens = urllib.urlopen("http://echoip.com/").read() gegevens retourneren import os, urllib, json, serial, time#start serial conection with arduino ser = serial.Serial('/dev/ttyACM0', 9600)betWait = 1 #wait before sending second string cant go lower than 1 because of arduino StringRead timeout sleepTime = 3 #wait before sending next batch of info# Return CPU temperature as a character string def getCPUtemperature(): res = os.popen('vcgencmd measure_temp').readline() return(res.replace("temp=","").replace("'C\n",""))# Return RAM information (unit=kb) in a list # Index 0: total RAM # Index 1: used RAM # Index 2: free RAM def getRAMinfo(): p = os.popen('free') i = 0 while 1: i = i + 1 line = p.readline() if i==2: return(line.split()[1:4])# Return % of CPU used by user as a character string def getCPUuse(): return(str(os.popen("top -n1 | awk '/Cpu\(s\):/ {print $2}'").readline().strip(\ )))# Return information about disk space as a list (unit included) # Index 0: total disk space # Index 1: used disk space # Index 2: remaining disk space # Index 3: percentage of disk used def getDiskSpace(): p = os.popen("df -h /") i = 0 while 1: i = i +1 line = p.readline() if i==2: return(line.split()[1:5]) #Get external IP def getIP(): data = urllib.urlopen("http://echoip.com/").read() return data def serialClear(): ser.write("00clr") def serialWrite(Line1, Line2): serialClear(); time.sleep(betWait) ser.write("00"+Line1) time.sleep(betWait) ser.write("01"+Line2)def getPID(): pid = os.getpid() return pid time.sleep(3) #wait for arduino to resetwhile True: # CPU informatiom CPU_temp = getCPUtemperature() CPU_usage = getCPUuse() # RAM information # Output is in kb, here I convert it in Mb for readability RAM_stats = getRAMinfo() RAM_total = round(int(RAM_stats[0]) / 1000,1) RAM_used = round(int(RAM_stats[1]) / 1000,1) RAM_free = round(int(RAM_stats[2]) / 1000,1) # Disk information DISK_stats = getDiskSpace() DISK_total = DISK_stats[0] DISK_free = DISK_stats[1] DISK_perc = DISK_stats[3] #external IP IP = getIP() #Python script pid PID = getPID() #OUTPUT TO ARDUINO serialWrite("Process ID", str(PID)) time.sleep(sleepTime) serialWrite("Temperature:", CPU_temp + " C") time.sleep(sleepTime) serialWrite("CPU Usage:", CPU_usage + "%") time.sleep(sleepTime) serialWrite("Total RAM:", str(RAM_total) + " MB") time.sleep(sleepTime) serialWrite("Used RAM:", str(RAM_used) + " MB") time.sleep(sleepTime) serialWrite("Free RAM:", str(RAM_free) + " MB") time.sleep(sleepTime) serialWrite("Total Disk Space:", str(DISK_total)+"B") time.sleep(sleepTime) serialWrite("Free Disk Space:", str(DISK_free) + "B") time.sleep(sleepTime) serialWrite("Disk Used:", str(DISK_perc)) time.sleep(sleepTime) serialWrite("Public IP:", str(IP)) time.sleep(sleepTime) #DEBUG OUTPUTS # print(CPU_temp) # print(CPU_usage) # print(RAM_total) # print(RAM_used) # print(RAM_free) # print(DISK_total) # print(DISK_free) # print(DISK_perc) # print(IP) # print("\n") # time.sleep(3) 

Gerelateerde Artikelen

Ultrasone afstandsmeter met LCD-scherm van Arduino UNO

Ultrasone afstandsmeter met LCD-scherm van Arduino UNO

In deze tutorial gaan we zien een ander gebruik van de HC-SR04 ultrasone module. In deze module wordt vaak gebruikt op robots en speelgoedauto's te vinden van belemmeringen, maar het kan worden gebruikt voor het meten van afstanden ook.Afstanden geme
Arduino draagbare Weather Monitor, hoogtemeter, temperatuur, vochtigheid, met behulp van DHT11 en BMP85 met LCD-scherm met behulp van slechts 3 pins

Arduino draagbare Weather Monitor, hoogtemeter, temperatuur, vochtigheid, met behulp van DHT11 en BMP85 met LCD-scherm met behulp van slechts 3 pins

ik heb dit project, omdat ik vaak bergen zoals in de afbeelding beklimmen en ik moet weten de hoogte, de temperatuur en ook wijzigingen in de weersomstandigheden, soms in slechts enkele minuten het weer krijgen zeer slecht, met een zeer dichte mist,
Draagbare Arduino Uno temperatuur en luchtvochtigheid Sensor met LCD-scherm

Draagbare Arduino Uno temperatuur en luchtvochtigheid Sensor met LCD-scherm

Hey iedereen. Ik heb een heleboel geweldige ideeën uit instructables gekregen door de jaren heen. Aangezien dit mijn eerste ' ible, ik figuur ik iets wat ik zo goed gemaakt zou delen. Ik ben het invoeren van dit in het volledige Spectrum Laser wedstr
Force Feedback met LCD-scherm

Force Feedback met LCD-scherm

In hedendaagse Instructable, zal wij gaan over de vraag hoe de stroom van een actuator controleren en aanpassen van de waarden met behulp van een LCD-scherm. Dit Instructable is een voortzetting op de Monitoring de Feedback van de lading van een Inst
Arduino Klok (met LCD en Stappenmotor)

Arduino Klok (met LCD en Stappenmotor)

Dit instructable ontstond vervulling de project-eis van de Makecourse bij de Universiteit van Zuid-Florida (www.makecourse.com)Dit instructable zal informatie verstrekken over:1. klok huisvesting / overige onderdelen2. Beschrijving van het circuit3.
Uw afbeelding op een Arduino! -TFT LCD scherm gids

Uw afbeelding op een Arduino! -TFT LCD scherm gids

heb je ooit gehoord van TFT LCD-schermen?  Ze zijn grote manieren om gegevens uit je Arduino worden weergegeven, of afbeeldingen worden weergegeven.  Het Arduino team zojuist een officiële TFT LCD-scherm met hun nieuwe Robot op Maker Faire 2013.  Het
Hoe maak je een Emoticon vest met LCD-scherm

Hoe maak je een Emoticon vest met LCD-scherm

Concept:Ik zou graag een jasje dat een kleine LCD-scherm heeft voor het maken van subteksten voor interpersoonlijke menselijke interactie. De gebruiker zou een beperkte "toetsenbord" met krachtsensors en knoppen onder zachte silicone toetsen geb
Ultrasone sensor robot auto met gebruikte motorfiets accu met LCD-scherm

Ultrasone sensor robot auto met gebruikte motorfiets accu met LCD-scherm

Deze robot auto werkt met ultrasone sensor HC-SR04 en met gebruikte 12V motorfiets accu aangedreven.Stap 1: Lichaam van de robot-auto De robot-lichaam met behulp van triplex en een vlak stuk van hout te maken. Snijd de multiplex in een 9 inch door 6
Digitale oscilloscoop met LCD-scherm

Digitale oscilloscoop met LCD-scherm

Ik heb geprobeerd om eenvoudige en goedkope oscilloscoop met behulp van gemeenschappelijke delen van hedendaagse component retailers. Bij het maken, ik heb geprobeerd om het verminderen van het aantal delen, met behoud van het minimum nodig voor de f
Thermohygrometer met klok en LCD-scherm van Arduino UNO

Thermohygrometer met klok en LCD-scherm van Arduino UNO

Deze 7 stappen rijdt u door de "bouw" van een thermo-hygrometer met klok op Arduino UNO.Gegevens en de tijd, de vochtigheid en de temperatuur worden getoond op een LCD 16 x 2 weergeven. Als u een LCD-scherm hebt aangeschaft en wilt weten hoe goe
Een LCD-scherm en een ultrasone afstandssensor verbindt met een Arduino

Een LCD-scherm en een ultrasone afstandssensor verbindt met een Arduino

Toen ik begon spelen met Arduinos, was dit de eerste kleine set up ik gemaakt. De video is een beetje armen. Dit was mijn eerste ga op dingen zodat ik verontschuldig me dat ik niet tot snuif terug dan was. Anyway, zeer eenvoudig instellen. Wat we doe
Arduino-Bit mappig op LCD-scherm met LOGO

Arduino-Bit mappig op LCD-scherm met LOGO

Dit project van Arduino wordt gebruikt voor weergave Arduino LOGO op LCD-scherm met behulp van de functie van de createChar van LiquidCrystal bibliotheek.In dit is het LOGO een teken van de aangepaste ontworpen door een binaire waarde te geven aan el
Arduino HC-SR04 (met LCD)

Arduino HC-SR04 (met LCD)

HalloIn deze tutorial ga ik je laten zien hoe 1. De HC-SR04 verbinden met een arduino en afdrukken van de afstand tot de seriële monitor, 2. Verbind een LCD en de resultaten er in plaats daarvan afdrukken. De sensor werkt door pingen een ultrasone ge
Thermostaat met Arduino en grote LCD Home

Thermostaat met Arduino en grote LCD Home

Een standaard thermostaat (SIEMENS-RAA30 16GR) te vervangen door een zelfgemaakte, arduino gebaseerde, grote LCD-scherm is een leuk project.DISCLAIMER: Lichtnet wordt gebruikt in beide besturen van de oven en voor arduino macht zo gelieve niet verder