Close

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

#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); 
}