Odpověď na: Zápis hodnot na Oled display PSI 128×64
Úvodní stránka › Fórum › Vaše projekty › Arduino › Zápis hodnot na Oled display PSI 128×64 › Odpověď na: Zápis hodnot na Oled display PSI 128×64
16.5.2017 v 22:12
#11481
posjirka
Účastník
jelikož nemám OLED display tak jednu po paměti a tutoriálu.
Kdyby něco nešlo, napiš/popiš problém a opravíme. V každém případě si musíš upravit piny kam máš připojený OLED:
// 16.5.2017 - by JP - iprava pro OLED display
// připojení knihovny U8glib - http://navody.arduino-shop.cz/docs/texty/0/18/u8glib_oled.zip
#include "U8glib.h"
// nastavení propojovacích pinů
#define D0 13
#define D1 11
#define DC 9
#define CS 8
#define RES 10
// inicializace OLED displeje z knihovny U8glib
U8GLIB_SSD1306_128X64 mujOled(D0, D1, CS, DC, RES);
const int buttonA = 2; //PIN NA INDIKACI CÍVKY A
const int buttonB = 3; //PIN NA INDIKACI CÍVKY B
const int civkaA = 4; //PIN NA CÍVKU A
const int civkaB = 5; //PIN NA CÍVKU B
int StateA = 0; //STAV INDIKACE CÍVKY A
int StateB = 0; //STAV INDIKACE CÍVKY B
int ax = 1; //POČET SEPNUTÍ CÍVKY A
int ay = 1; //POČET NESEPNUTÍ CÍVKY A
int bx = 1; //POČET SEPNUTÍ CÍVKY B
int by = 1; //POČET NESEPNUTÍ CÍVKY B
int t1 = 1200; //ČAS SEPNUTI 1,2 vteřiny
int t2 = 800; //ČAS ROZEPNUTI 0,8 vteřiny
int t3 = 10000; //ČAS ROZBĚHU PROGRAMU 10 vteřin
int i1 = 0; //POČET CYKLŮ NA KONCI 0
int i2 = 30000; //POČET CYKLŮ NA KONCI 30.000
void setup() {
Serial.begin(9600); //ZAHÁJENÍ KOMUNIKACE NA SERIOVÉ LINCE
Serial.println("PROGAM EVM");
Serial.println("30.000 CYKLU");
Serial.println("CEKAM 10 VTERIN A ZACNU CYKLOVAT");
intro(); // UVODNI OBRAZOVKA
delay(t3);
pinMode(buttonA, INPUT_PULLUP); //indikace cívky A
pinMode(buttonB, INPUT_PULLUP); //indikace cívky B
pinMode(civkaA, OUTPUT); //sepnuté cívky A
pinMode(civkaB, OUTPUT); //sepnuté cívky B
for(int i1=1; i1 <= i2; i1++){
Serial.print("CYKLUS ");
Serial.println(i1);
//cívka A
digitalWrite(civkaA, HIGH);
StateA = digitalRead(buttonA);
if (StateA == HIGH){
Serial.print("A – ON ");
} else {
Serial.print("A – OFF ");
}
if (StateA == HIGH){
Serial.println(ax++);
} else {
Serial.println(ay++);
}
menu(); // zobrazeni menu
delay(t1);
digitalWrite(civkaA, LOW);
delay(t2);
//cívka B
digitalWrite(civkaB, HIGH);
StateB = digitalRead(buttonB);
if (StateB == HIGH){
Serial.print("B – ON ");
} else {
Serial.print("B – OFF ");
}
if (StateB == HIGH){
Serial.println(bx++);
} else {
Serial.println(by++);
}
menu(); // zobrazeni menu
delay(t1);
digitalWrite(civkaB, LOW);
delay(t2);
}
Serial.println("");
Serial.print("POCET CYKLU ");
Serial.println(i2);
Serial.print("A – ON ");
Serial.println(ax-1);
Serial.print("A – OFF ");
Serial.println(ay-1);
Serial.print("B – ON ");
Serial.println(bx-1);
Serial.print("B – OFF ");
Serial.println(by-1);
menu(); // zobrazeni menu
}
void loop () {
}
void intro() {
// uvodni obrazovka
mujOled.setFont(u8g_font_unifont);
mujOled.setPrintPos(0, 10);
// výpis textu na zadanou souřadnici
mujOled.print("PROGRAM EVM");
mujOled.setPrintPos(0, 25);
mujOled.print("30.000 CYKLU");
mujOled.setPrintPos(0, 40);
mujOled.print("CEKAM 10 VTERIN");
mujOled.setPrintPos(0, 55);
mujOled.print("A ZACNU CYKLOVAT");
}
void menu(){
// zobrazeni menu
mujOled.setFont(u8g_font_unifont);
mujOled.setPrintPos(0, 10);
// výpis textu na zadanou souřadnici
mujOled.print("CYKLUS ");
mujOled.print(i1);
mujOled.setPrintPos(16, 25);
mujOled.print("ON");
mujOled.setPrintPos(72, 25);
mujOled.print("OFF");
mujOled.setPrintPos(0, 40);
mujOled.print("A");
mujOled.setPrintPos(16, 40);
mujOled.print(ax);
mujOled.setPrintPos(72, 40);
mujOled.print(ay);
mujOled.setPrintPos(0, 55);
mujOled.print("B");
mujOled.setPrintPos(16, 55);
mujOled.print(bx);
mujOled.setPrintPos(72, 55);
mujOled.print(by);
}