Arduino tekst LCD animatie (9 / 9 stap)

Stap 9: Tank code voor 44780 / RT0802B-1 ver 2.0

/ / Deze code is voor een 44780 LCD 14-pins paneel met 2 meer pinnen voor anode/kathode terug verlichting

#include < LiquidCrystal.h >

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

Raad van bestuur
1 = aarde
2 = Vcc
3 = pot 10k - 20k voor contrast
4 = RS
5 = RW
6 = NL
11 = D4
12 = D5
13 = D6
14 = D7
Zoek internet op 44780 voor verschillende pagina's die de bedrading in groot detail beschrijven

RW heeft worden bedraad laag om te schrijven, anders blijft het in de modus "lezen"

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

VOID Setup {}
de LCD's aantal kolommen en rijen instellen:
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);
}

Nodig acht 32-bits hoeveelheden die ik voor verschuiven bits rond gebruiken kan.
Het oorspronkelijke beeld van de tank is in deze waarden.

[lange tankImg] = {}
((lange) B010000 << 10) | ((lange) B000000 << 5) | B000000 / / antenne tip
, (B010111 (lange) << 10) | ((lange) B011110 << 5) | B000000 / / top torentje
, (B001111 (lange) << 10) | ((lange) B011111 << 5) | B011110 / / torentje medio met vat
, (B000111 (lange) << 10) | ((lange) B011110 << 5) | B000000 / / torentje basis
, (B001111 (lange) << 10) | ((lange) B011111 << 5) | B010000 / / top loopvlak
, (B010000 (lange) << 10) | ((lange) B000000 << 5) | B001000
, (B010000 (lange) << 10) | ((lange) B000000 << 5) | B001000
, (B001111 (lange) << 10) | ((lange) B011111 << 5) | B010000 / / bodem, 24 pixels totaal in loopvlak het loopvlak
};

vergaarbak is de bit-gewijze positie op het scherm.
tankcharx is de character-wise positie, dus vergaarbak / 5.
Het kan het negatieve.
Vergaarbak nul is de tank aan de linkerkant van het scherm
dus tankImg bytes zijn onderverdeeld in vier aangepaste tekens
de vierde waarvan leeg bits wordt
De tank bits verschuiven op vergaarbak een, een beetje naar rechts
en als ik slim ben, de treden zijn berekend, zodat ze "draaien"
En zo verder
Want er vijf bits horizontaal per aangepaste char zijn
en de tank treden gaan elke andere, ik kan het herhalen van het origineel
tank loopvlakken basisgewicht van zelfs char posities
int vergaarbak = -15;
int tankcharx;
int tankchary = 1;
int treadx = 0;

#define BITS_PER_CHAR 6

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

Eerste uitlevering, geen rotatie van loopvlakken
Als ((tankx % BITS_PER_CHAR) == 0) {}
Volledige verschuiving is ingeschakeld, moet het tekenen van een leeg waar de tank was voor het laatst
Als (tankcharx > = 1) {}
lcd.setCursor (tankcharx-1, tankchary);
LCD.write(' ');
}
Als (tankcharx > = 0 & & tankcharx < = 7) {}
lcd.setCursor (tankcharx, tankchary);
LCD.write((byte)0);
}
Als (tankcharx + 1 > = 0 & & tankcharx + 1 < = 7) {}
lcd.setCursor (tankcharx + 1, tankchary);
LCD.write((byte)1);
}
Als (tankcharx + 2 > = 0 & & tankcharx + 2 < = 7) {}
lcd.setCursor (tankcharx + 2, tankchary);
LCD.write((byte)2);
}
Als (tankcharx + 3 > = 0 & & tankcharx + 3 < = 7) {}
lcd.setCursor (tankcharx + 3, tankchary);
LCD.write((byte)3);
}
}
Berekenen van de bits van de afzonderlijke aangepaste tekens
int. shiftbits = (vergaarbak % BITS_PER_CHAR);
Serial.Print ("shiftbits =");
Serial.println(shiftbits);
Als (shiftbits < 0) {shiftbits += BITS_PER_CHAR;}
voor (int y = 0; y < 8; y ++)
{
lange lval = tankImg [y];
schakelaar (treadx) {}
Case 0:
schakelaar (y) {}
Case 4:
lval ^ = 0x2cb0; breken;
Case 7:
lval ^ = 0x2490; breken;
}
breken;
Case 1:
schakelaar (y) {}
Case 4:
lval ^ = 0x1240; breken;
lval ^ = 0x36d0; breken;
Case 5:
lval ^ = 0x0008; breken;
Case 6:
lval ^ = 0x4000; breken;
Case 7:
lval ^ = 0x0920; breken;
}
breken;
Case 2:
schakelaar (y) {}
Case 4:
lval ^ = 0x0920; breken;
lval ^ = 0x1b60; breken;
Case 5:
lval ^ = 0x4000; breken;
Case 6:
lval ^ = 0x0008; breken;
Case 7:
lval ^ = 0x1240; breken;
}
breken;
}

lange 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);
++ vergaarbak;
Als (vergaarbak > = 50) {vergaarbak = -15;}
++ treadx;
Als (treadx == 3) {treadx = 0;}
delay(100);
}

Gerelateerde Artikelen

Arduino 5110 LCD Shield

Arduino 5110 LCD Shield

Arduino 5110 LCD schild DHT11 Tint RTCYouTube-video 's
Arduino: Nokia LCD & Sensors

Arduino: Nokia LCD & Sensors

Arduino: Nokia LCD & sensorenProbleem: Het maken van mijn Arduino, een temperatuur-relatieve vochtigheid sensor en een Nokia3310LCD scherm samenwerken.Nu, ik ben een Luie oude Geek, dus wat ik wilde was een Arduino-kit die schilden zou nemen. Deze Fr
Home Automation met Arduino, Buttons, LCD, EEPROM en slimme telefoon

Home Automation met Arduino, Buttons, LCD, EEPROM en slimme telefoon

Nu kunnen we de controle van romp huis met slimme telefoonStap 1: Hardware vereist voor domotica kunt u verschillende dingen, ik kies schakelen of relayIn dit project u zal bepalen switcher door mobiele .if mobiele niet aanwezig is kunt u ook bediene
DIY Arduino scrollen LCD tekst schild

DIY Arduino scrollen LCD tekst schild

Dit project is een upgrade op mijn "DIY Arduino LCD schild" ga check out hoe te maken op mijn kanaal!In dit project 'm I gonna een Arduino Uno schuiven van tekst op een 16 × 2 karakter LCD die wordt beheerd met een paar drukknoppen gebruiken. He
De Arduino / TFT LCD verbinding

De Arduino / TFT LCD verbinding

U zegt dat u wilt een TFT-scherm aan een Arduino aansluiten? Zijn u een grapje?No! Voor over de prijs van een bekende 2 x 16 LCD, krijg je een hoge resolutie TFT beeldscherm. Voor zo laag als $4 (verzendkosten inbegrepen!), is het mogelijk om te kope
Arduino I2C LCD-stuurprogrammabibliotheek en PackMan

Arduino I2C LCD-stuurprogrammabibliotheek en PackMan

Dit project is een uitgebreide Arduino-poort van een eerdere Instructable die u hier vindt;Die snappily was getiteld...'Microchip PIC Library to Control een 20 door 4 LCD over I2C'Het is mijn eerste gaan in het schrijven van een C++ Arduino Library d
Monteren van een Arduino Nano / LCD projecten Platform

Monteren van een Arduino Nano / LCD projecten Platform

De "Arduino Nano / 1.8" TFT LCD projecten Platform "bestaat uit een 3D gedrukte geval dat wraps een aangepaste ontworpen PCB waarop is gemonteerd een Arduino Nano, een 1.8" TFT LCD met een SD-kaartlezer en drie drukknoppen die blootsta
Arduino Thermometer + LCD I2C

Arduino Thermometer + LCD I2C

Ik heb besloten om een grappige Arduino concept thermometer voor het geval het is het midden van de nacht, apotheken niet werken, u niet goed voelt zich en u wilt controleren uw lichaamstemperatuur. Hebt u Arduino aan uw zijde, is dit een levensredde
Arduino tekst naar Morse code

Arduino tekst naar Morse code

Hallo!Dit is mijn eerste instractableIk heb geschreven onder leiding van een klein programma in tekst omzetten in Morse code en weergeven met behulp van ArduinoZoemer kan ook vrij gemakkelijk worden toegevoegd
PSU-voeding van oude ATX met Arduino en LCD Monitor een proefbank

PSU-voeding van oude ATX met Arduino en LCD Monitor een proefbank

Hallo allemaal en welkom op mijn eerste Instructable.Ik wilde altijd een bankje PSU voor gemakkelijke toegang tot een bron van macht, en iets dat ik kan rekenen op wanneer u werkt aan verschillende projecten. Ik wilde een PSU dat:• biedt 3, 3V, 5v en
Arduino thermometer, LCD Display, Thermistor

Arduino thermometer, LCD Display, Thermistor

*** dit project wordt niet langer ondersteund, de arduino code is verouderd en niet langer werken, mijn arduino brak dus ik het niet repareren, hebt u een correctie-voel je vrij om PM mij! ***Haar een arduino project, het creëren van een temperatuur
Douche Monitor Arduino met LCD display

Douche Monitor Arduino met LCD display

Welkom! Voor onze milieu Capstone klasse (senior proefschrift) voor St. Olaf College bouwden we een monitor die doeltreffend op hoeveel water toezien zou maakt gebruik van een douche. Het idee achter deze water-monitor is dat als u een piezo transduc
Arduino Nano: Bitmap animatie in SSD1306 I2C OLED-Display met Visuino

Arduino Nano: Bitmap animatie in SSD1306 I2C OLED-Display met Visuino

OLED Displays zijn enkele van de coolste en meest geavanceerde modules die u in uw project van Arduino gebruiken kunt. Ik maakte al een project toont u hoe u analoge waarden op het OLED Display kunt afdrukken. Bijna meteen iemand gepost vragen hoe om
Arduino LCD metronoom

Arduino LCD metronoom

Metronomen kunnen duur zijn maar met een Arduino en een paar delen kun je een uitbreidbare metronoom.Stap 1: onderdelenDelen:-Arduino (elke normale grootte Arduino zal wel goed)-De Arduino IDE en de kennis om het te gebruiken-Veel draden-HD44780 LCD-