Arduino text LCD animation (9 / 9 steg)

Steg 9: Tank koden för 44780 / RT0802B-1 ver 2.0

/ / Här koden är för en 44780 LCD-14-polig panel med 2 mer tappar för anod/katod bakgrundsbelysning

#include < LiquidCrystal.h >

LiquidCrystal lcd (7, 8, 9, 10, 11, 12);
RS, SV, DB4, DB5, DB6, DB7

Styrelsen
1 = jord
2 = Vcc
3 = potten 10k - 20k för kontrast
4 = RS
5 = RW
6 = SV
11 = D4
12 = D5
13 = D6
14 = D7
Sök på internet på 44780 för olika sidor som beskriver ledningarna i detalj

RW har till vara fast lågt att skriva, annars återstår i "läsa" läge

byte sprite0 [8],
byte sprite1 [8],
byte sprite2 [8],
byte sprite3 [8],

void setup() {
Ange den LCD antal kolumner och rader:
LCD.BEGIN (8, 2);
lcd.setCursor(0,0);
LCD.Print("tankdemo");
lcd.setCursor(0,1);
LCD.Print("
MEMSET(sprite0,7,8);
MEMSET(sprite1,7,8);
MEMSET(sprite2,7,8);
MEMSET(sprite3,7,8);
lcd.setCursor(0,1);
Serial.BEGIN(9600);
}

Behöver åtta 32-bitars kvantiteter som jag kan använda för skiftande bitar runt.
Den ursprungliga tank bilden är i dessa värden.

lång tankImg [] = {
((långa) B010000 << 10) | ((långa) B000000 << 5) | B000000 / / antenn tips

, ((långa) B010111 << 10) | ((långa) B011110 << 5) | B000000 / / tornets topp
, ((långa) B001111 << 10) | ((långa) B011111 << 5) | B011110 / / torn mitten med fat
, ((långa) B000111 << 10) | ((långa) B011110 << 5) | B000000 / / tornets bas
, ((långa) B001111 << 10) | ((långa) B011111 << 5) | B010000 / / trampa upp
, ((långa) B010000 << 10) | ((långa) B000000 << 5) | B001000
, ((långa) B010000 << 10) | ((långa) B000000 << 5) | B001000
, ((långa) B001111 << 10) | ((långa) B011111 << 5) | B010000 / / trampa botten, 24 pixlar totalt i slitbanan
};

tankx är bitvis positionen över skärmen.
tankcharx är den character-wise ståndpunkten, således tankx / 5.
Det kan vara negativt.
På tankx noll är tanken till vänster på skärmen
så tankImg byte är uppdelade i fyra anpassade tecken
den fjärde som är tomma bitar
På tankx en skifta tank bitar lite till höger
om jag är smart, slitbanor beräknas så att de "rotera" och
Och så vidare
Eftersom det finns fem bitar horisontellt per anpassade röding
och tank slitbanor går alla andra, jag kan upprepa ursprungliga
tank slitbanor början även röding positioner
int tankx = -15;
int tankcharx;
int tankchary = 1;
int treadx = 0;

#define BITS_PER_CHAR 6

void loop() {
tankcharx = tankx / BITS_PER_CHAR;
Serial.Print ("tankx =");
Serial.Print(tankx);
Serial.Print ("tankcharx =");
Serial.println(tankcharx);

Inledande rendering, ingen rotation av slitbanor
om ((tankx % BITS_PER_CHAR) == 0) {
Fullständig SKIFT är på, behöver man drar ett tomt där tanken senast var
om (tankcharx > = 1) {
lcd.setCursor (tankcharx-1, tankchary);
LCD.write(' ');
}
om (tankcharx > = 0 & & tankcharx < = 7) {
lcd.setCursor (tankcharx, tankchary);
LCD.write((byte)0);
}
om (tankcharx + 1 > = 0 & & tankcharx + 1 < = 7) {
lcd.setCursor (tankcharx + 1, tankchary);
LCD.write((byte)1);
}
om (tankcharx + 2 > = 0 & & tankcharx + 2 < = 7) {
lcd.setCursor (tankcharx + 2, tankchary);
LCD.write((byte)2);
}
om (tankcharx + 3 > = 0 & & tankcharx + 3 < = 7) {
lcd.setCursor (tankcharx + 3, tankchary);
LCD.write((byte)3);
}
}
Beräkna bitarna på individuella anpassade tecken
int shiftbits = (tankx % BITS_PER_CHAR);
Serial.Print ("shiftbits =");
Serial.println(shiftbits);
om (shiftbits < 0) {shiftbits += BITS_PER_CHAR;}
för (int y = 0; y < 8; y ++)
{
lång lval = tankImg [y];
växel (treadx) {
fall 0:
Växla (y) {
fall 4:
lval ^ = 0x2cb0; bryta;
fall 7:
lval ^ = 0x2490; bryta;
}
bryta;
fall 1:
Växla (y) {
fall 4:
lval ^ = 0x1240; bryta;
lval ^ = 0x36d0; bryta;
fall 5:
lval ^ = 0x0008; bryta;
fall 6:
lval ^ = 0x4000; bryta;
fall 7:
lval ^ = 0x0920; bryta;
}
bryta;
fall 2:
Växla (y) {
fall 4:
lval ^ = 0x0920; bryta;
lval ^ = 0x1b60; bryta;
fall 5:
lval ^ = 0x4000; bryta;
fall 6:
lval ^ = 0x0008; bryta;
fall 7:
lval ^ = 0x1240; bryta;
}
bryta;
}

lång lshifted = lval << (BITS_PER_CHAR-shiftbits);
sprite0 [y] = (byte) ((lshifted >> (3 * BITS_PER_CHAR)) & B011111);
sprite1 [y] = (byte) ((lshifted >> (2 * BITS_PER_CHAR)) & B011111);
sprite2 [y] = (byte) ((lshifted >> (1 * BITS_PER_CHAR)) & B011111);
sprite3 [y] = (byte) ((lshifted >> (0 * BITS_PER_CHAR)) & B011111);
}
lcd.createChar (0, sprite0);
lcd.createChar (1, sprite1);
lcd.createChar (2, sprite2).
lcd.createChar (3, sprite3).
++ tankx;
om (tankx > = 50) {tankx = -15;}
++ treadx;
om (treadx == 3) {treadx = 0;}
Delay(100);
}

Se Steg
Relaterade Ämnen

Arduino text'in

Arduino text'in.Viktiga funktioner:24 reläer kontrolleras av 4 I/O rader!Cell phone text med hjälp av din Arduino.Detta projekt hackar en mobiltelefon till text med normalt öppna reläer. Efter att ha undersökt cellulära moduler på internet bestämde j...

Bänk PSU strömförsörjning från gamla ATX med Arduino och LCD-skärm

Hej alla och Välkommen till min första Instructable.Jag har alltid velat en bänk PSU för enkel åtkomst till en strömkälla, och något som jag kan lita på när du arbetar med olika projekt. Jag ville ha ett NÄTAGG som:• ger 12v och 5v 3.3V utgångar• ger...

Arduino: Nokia LCD & sensorer

Arduino: Nokia LCD & sensorerPROBLEM: Att göra min Arduino, en temperatur-relativ luftfuktighet sensor och en Nokia3310LCD skärm tillsammans.Nu, jag är en Lat gamla Geek, så vad jag ville ha var en Arduino kit som skulle ta sköldar. Denna Freeduino v...

Duscha Monitor Arduino med LCD-skärm

Välkommen! För vår miljö Capstone klass (senior te) för St. Olaf College vi byggt en bildskärm som skulle effektivt övervaka hur mycket vatten använder en dusch. Tanken bakom denna vatten monitor är att om du bifogar en piezo givare (liten mikrofon)...

Arduino 5110 LCD sköld

Arduino 5110 LCD sköld DHT11 nyans RTCYouTube-videor...

Hemautomation med arduino, knappar, LCD, EEPROM och smarttelefon

Nu kan vi styra skrovet med smart telefon hemSteg 1: Hårdvara krävs för hemautomation kan du lägga till olika saker jag väljer omkoppling eller reläI detta projekt du styr kopplat av mobila .if mobil finns inte du kan också använda knappsatsenJag ock...

DIY Arduino rullning LCD text sköld

Detta projekt är en uppgradering på min "DIY Arduino LCD shield" gå kolla in hur man gör det på min kanal!I detta projekt kommer jag att använda en Arduino Uno för att bläddra lite text på en 16 × 2 tecken LCD som kontrolleras med ett par tryckk...

Arduino / TFT LCD-anslutning

Du säger att du vill koppla in en TFT-skärm till en Arduino? Skämtar du?No! För om priset för en bekant 2 x 16 LCD, du får en högupplöst TFT-skärm. För så lågt som $4 (frakt ingår!), är det möjligt att köpa en liten, skarp TFT skärm som kan vara grän...

Arduino I2C LCD-chaufför bibliotek och PackMan

Detta projekt är en omfattande Arduino port av en tidigare Instructable som finns här;Som hette snappily..."Microchip PIC bibliotek att styra en 20 av 4 LCD över I2C"Det är min första gå på att skriva en C++-bibliotek för Arduino så ber om ursäk...

Arduino ledar-LCD-klocka

Denna klocka är utformad som en fristående klocka eller som en ledar-tar tid att driva slav-tar tid och är bärbar med batteribackup. Se klockans hemsida för ytterligare detaljer LCD klocka hem huvudsidaUppdatering - automatisk sommar advance och vint...

Montering en Arduino Nano / LCD projekt plattform

Den "Arduino Nano / 1.8" TFT LCD projekt plattform "består av en 3D tryckta fall att wraps en anpassade utformade PCB som är monterad en Arduino Nano, en 1.8" TFT LCD med en SD-kortläsare och tre tryckknappar som är utsatta på framsida...

Arduino termometern + LCD-I2C

Jag har beslutat att ge en rolig Arduino konceptet termometer i fall det är mitt i natten, apotek inte fungerar, du inte känner dig väl och du vill kontrollera din kroppstemperatur. Om du har Arduino vid din sida, är ett liv sparare!Komponenter behöv...

Arduino Text till Morse code

Hej!Detta är min första instractableJag har skrivit ett litet program i Arduino att konvertera text till morsekod och Visa den med hjälp av lettSummern kan också läggas ganska lätt...

Arduino termometer, LCD Display, termistor

*** detta projekt inte längre stöds, arduino koden är föråldrad och inte längre fungerar, min arduino bröt så jag inte kan fixa det, om du har en fix känsla gratis till PM mig! ***Dess en arduino projekt, skapa en temperatur measurer, med en termisto...

Arduino Nano: Bitmapp animation i SSD1306 I2C OLED uppvisning med Visuino

OLED-displayer är några av de coolaste och mest avancerade moduler som du kan använda i din Arduino projekt. Jag har redan gjort ett projekt som visar dig hur du kan skriva ut analoga värden på OLED-displayen. Nästan genast någon postat frågar hur ma...

Arduino/Easy Driver Animation Control Board

Detta instructable tjänar två syften i förhållande till församlingen och använder ett Animation Control Board (PCB). PCB är en spin off från mitt projekt att skapa en N-skala vindbrygga som är funktionella och drivs av en Arduino ihopkopplad med en l...

Din bild på en Arduino! -TFT LCD skärm Guide

har du hört talas om TFT LCD-skärmar? De är bra sätt att visa information från din Arduino eller Visa bilder. Arduino laget släppt precis en officiell TFT LCD-skärm med sina nya Robot på Maker Faire 2013. Det är mycket lätt att komma igång med! Denna...

Arduino LCD Metronome

Metronomer kan vara dyrt men med en Arduino och några delar kan du göra en extensible metronome.Steg 1: delarDelar:-Arduino (någon normal storlek Arduino kommer att vara bra)-Arduino IDE och kunskapen att använda den-Massor av ledningar-HD44780 LCD-s...

Ansluta en LCD till Arduino

i detta instructable vi kommer att titta på hur man ansluter en parallell LCD till en Arduino. LCD-skärmen som jag använder använder gemensamma HD44780 gränssnitt. Många LCD-skärmar har detta, kan du vanligtvis tala med 16-pin gränssnittet. Du behöve...