Aan de slag met OLED Displays (6 / 16 stap)

Stap 6: Hoe teken een pixel?

Nu we weten hoe de OLED werkt, kunnen we een programma waarmee de gebruiker een specifieke pixel op het scherm inschakelen maken.

 #include //Include Wire library for I2C communication#define HEIGHT 64 #define WIDTH 128 const int RST = 10; //Assign pin 10 for Reset int i; //Set variable i as integer static unsigned char array[1024]; //buffer array/> void setup() { pin_init(); //Initialize pins initialize_OLED(); //Initialize screen memset(array, 0, sizeof(array)); //Clear array draw_pixel(63,31); //Store pixel at (x,y) location Flush(); //Send data } void loop() { //Nothing happens here } void pin_init(){ Serial.begin(9600); //Set baud for serial transmission pinMode(RST, OUTPUT); //Set RST as output } void initialize_OLED(){ Wire.begin(); //Initialize I2C interface digitalWrite(RST, LOW); //Set reset pin low (active) delay(10); //Wait 100 ms digitalWrite(RST, HIGH); //Set reset pin high (inactive) Wire.beginTransmission(0x3D); // Start communication with slave Wire.write(0x00); //Command stream Wire.write(0xAE); //Set display Off Wire.write(0xD5); //Set display clock divide ratio/oscillator frequency Wire.write(0x80); Wire.write(0xA8); //Set multiplex ratio Wire.write(0x3F); Wire.write(0xD3); //Set display offset Wire.write(0x00); Wire.write(0x40); //Set display start line Wire.write(0x8D); //Set charge pump Wire.write(0x14); //VCC generated by internal DC/DC circuit Wire.write(0xA1); //Set segment re-map Wire.write(0xC0); //Set COM output scan direction Wire.write(0xDA); //Set COM pins hardware configuration Wire.write(0x12); Wire.write(0x81); //Set contrast control Wire.write(0xCF); Wire.write(0xD9); //Set pre-changed period Wire.write(0xF1); Wire.write(0xDB); //Set VCOMH Deselected level Wire.write(0x40); Wire.write(0xA4); //Set entire display on/off Wire.write(0xA6); //Set normal display Wire.write(0x20); //Set memory address mode Wire.write(0x00); //Horizontal Wire.write(0xAF); //Set display on Wire.endTransmission(); //End communicaiton with slave } void draw_pixel(int x, int y) if((x<0) || (x>=WIDTH) || (y<0) || (y>=HEIGHT)){ //Check for boundaries return; } else{ array[x+(y/8)*WIDTH] |= _BV((y%8)); //Store pixel in array } } void Flush(){ Wire.beginTransmission(0x3D); //Start communication with slave Wire.write(0x00); //Command stream Wire.write(0x00); //Set lower column start address for page addressing mode Wire.write(0x10); //Set higher column start address for page addressing mode Wire.write(0x40); //Set display start line Wire.endTransmission(); //End communication with slave unsigned char twbrbackup = TWBR; //Two wire bit rate register TWBR = 12; //Set to 400 kHz for(unsigned short q=0; q<(WIDTH*HEIGHT/8); q++){ Wire.beginTransmission(0x3D); //Start communication with slave Wire.write(0x40); //Data stream for(unsigned char w=0; w<16; w++){ Wire.write(array[q]); //Transmit data to be displayed q++; } q--; Wire.endTransmission(); //End communication with slave } TWBR = twbrbackup; } 

De draad bibliotheek in staat stelt te communiceren met apparaten I2C Arduino. In het eerste deel van de code wij de reeds genoemde digitale pin toewijzen aan de eerste, en maak een array om de buffer van de gegevens die wij wilt weergeven. Dan pin RST wordt geïnitialiseerd door daarmee een uitgang. Vervolgens wordt de OLED geïnitialiseerd door het volgen van het voorbeeld in de weergave gegevensblad op pagina 15. Het wordt aanbevolen dat u het apparaat voordat u het eenmaal hebt gereset. Dit wordt gedaan door het instellen van de eerste laag voor enige tijd en vervolgens hoog. Aangezien deze pin actieve laag is, moet het worden hoge tijdens normale werking.

Gerelateerde Artikelen

Aan de slag met pcDuino

Aan de slag met pcDuino

Na het plezier met de pcDuino, realiseerde ik dat mij konden wekken een stelletje tutorials te gebruiken. Dus dat is gewoon wat ik ga doen, dus laat mij uit te leggen wat is een pcduino en hoe u kunt instellen voor de eerste keer start.Wat is een pcD
Aan de slag met BTE13-010 - kloon Arduino Mini

Aan de slag met BTE13-010 - kloon Arduino Mini

Dit is een eenvoudige gids dat je hoe leren zal aan de slag met deze goedkope Arduino mini kloon, die betrekking hebben op alle maatregelen die men doen moet om te laten werken. In principe zijn ze 4...Solderen PIN headers *Bedrading het omhoogCorrec
Aan de slag met BADGEr (gemakkelijk)

Aan de slag met BADGEr (gemakkelijk)

Ik zal niet gaan veel in de technische details over de BADGEr en elektronisch papier display technologieën.Liever dit beschouw dit instructable is als de handleiding aan de slag met BADGEr gemakkelijk.Stap 1: Dingen die we nodigBADGEr-de e-reader boa
DIY-aan de slag met DRONES (met externe kalibratie)

DIY-aan de slag met DRONES (met externe kalibratie)

Wat zijn ze en wie hen gebruikt? Sommigen noemen hen drones, sommige gelden het label "quadcopters", al hebben ze een aantal rotoren of zelfs vliegtuigen worden - een afkorting voor hen "onbemande antenne systemen" (UAS). Ik liever noe
Aan de slag met de ESP8266 met "AT-opdrachten" Via Arduino

Aan de slag met de ESP8266 met "AT-opdrachten" Via Arduino

ESP8266 Wifi Module is een geïntegreerde chip ontworpen voor communicatie met de wereld van het internet via Wifi-radiosignalen. Het is de verbinding tussen een project en het internet. Het heeft aan boord en geheugen waarmee het worden geïntegreerd
Aan de slag met ESP8266 met op opdrachten, NodeMCU of het Arduino (ESP-12E)

Aan de slag met ESP8266 met op opdrachten, NodeMCU of het Arduino (ESP-12E)

Dit Instructable zal u tonen de stappen die nodig zijn om te beginnen met de ESP8266 met behulp van een fantastische kleine ontwikkel bord voor de ESP-12E-module. Het bord bevat alles wat u nodig met inbegrip van een USB naar seriële adapter, oppervl
Aan de slag met IoT met behulp van het Particle Core

Aan de slag met IoT met behulp van het Particle Core

IoT is een echt leuk om te experimenteren, terwijl ze plezier het is ook zeer macht volledig. Het kan krijgen een breed scala van apparaten aansluiten, zoals bijvoorbeeld een koffiezetapparaat dat kunt tweet wanneer de koffie wordt gedaan of een auto
AAN DE SLAG MET DOMOTICASYSTEEM.

AAN DE SLAG MET DOMOTICASYSTEEM.

WAARSCHUWING: DIT PROJECT ZAL OORZAKEN OPWINDING DIE MOGELIJK SCHADELIJK VOOR DE GEZONDHEID.Dus hier ben ik met een ander leuk Instructables controle geleid door stem, met behulp van Arduino via Bluetooth-module (HC 05). Zodat deze Instructables kan
Aan de slag met LinkIt One - knippert een LED

Aan de slag met LinkIt One - knippert een LED

Hoi!Bent u vaak verward door de hele wereld nieuwe borden en tech die om de paar maanden houden komen?Bent u vaak op zoek op google gewoon zin te maken van dit alles?Bent u bereid om echt geweldig projecten te maken, maar weet niet waar te beginnen?B
Aan de slag met de interactie onderdelen Kit deel 1

Aan de slag met de interactie onderdelen Kit deel 1

In deze tutorial zal ik laten zien hoe met behulp van een potentiometer (potmeter) controle van de helderheid van een LED. Ook heb ik een schakelaar van de tilt (wordt later beschreven) in serie met de LED, zodat wanneer het breadboard rechtop het op
Aan de slag met Ubuntu Linux

Aan de slag met Ubuntu Linux

Linux is het besturingssysteem (OS) van keuze voor de computer savvy sinds haar oprichting, maar in de afgelopen paar jaar met de release van kleine linux gebaseerde fysieke computing platforms zoals de Raspberry Pi, BeagleBone en Arduino Yun (onder
Aan de slag met de ESP8266 ESP-12

Aan de slag met de ESP8266 ESP-12

Dit instructable zal betrekking hebben op de basisstappen die u volgen moet om aan de slag met de ESP8266 ESP-12.Veel van deze inhoud er al uit, maar ik had een harde tijd om alles op zijn plaats, en de verschillende tutorials kunnen leiden tot veel
Hoe aan de slag met Eclipse en AVR

Hoe aan de slag met Eclipse en AVR

AVR's programmeren is leuk, maar soms maken de fabrikanten ontwikkelomgevingen code onderhoud een karwei. Als je op zoek naar een vrije, cross-platform, hoge kwaliteit stuk van software voor het programmeren van AVR's Eclipse is een goede keuze.Verpl
Aan de slag met ubuntu en de AVR draak

Aan de slag met ubuntu en de AVR draak

hier is wat ik deed om te beginnen met de AVR Dragon te programma ATMEGA8 microcontrollers met behulp van ubuntu (dit is gericht op beginners, ikzelf ben ook een beginner, wordt dus geen verbeteringen van meer ervaren gebruikers worden zeer gewaardee