You are on page 1of 6

22/7/2019 Arduino and OLED display Knob + Menu FREE CODE

Arduino Tutorial Online

Arduino and OLED display Knob + Menu FREE


CODE
ใน ธันวาคม 18, 2560

Arduino and OLED display Knob + Menu FREE CO…


CO…

#include <SPI.h>
#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

#de ne NUM_MENU 3

#de ne OLED_RESET 13

Adafruit_SSD1306 display(OLED_RESET);

www.arduinotutorialonline.com/2017/12/arduino-and-oled-display-knob-menu-free.html 1/6
22/7/2019 Arduino and OLED display Knob + Menu FREE CODE

#if (SSD1306_LCDHEIGHT != 64)


Arduino Tutorial Online

#error("Height incorrect, please x Adafruit_SSD1306.h!");

#endif

const char menu1[] PROGMEM = "ITEM_1";


const char menu2[] PROGMEM = "ITEM_2";

const char menu3[] PROGMEM = "ITEM_3"; 

const char * const menus[] PROGMEM =

{
    menu1,

    menu2,

    menu3

};

int val=-1;

int encoder0PinA = 3;

int encoder0PinB = 4;

int encoder0Pos = 0;

int encoder0PinALast = LOW;


int n = LOW;

void setup() {

  pinMode (encoder0PinA, INPUT);

  pinMode (encoder0PinB, INPUT);

  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with

www.arduinotutorialonline.com/2017/12/arduino-and-oled-display-knob-menu-free.html 2/6
22/7/2019 Arduino and OLED display Knob + Menu FREE CODE

the I2C addr 0x3D (for the 128x64)


Arduino Tutorial Online
 

  Serial.begin (9600);
}

void loop() {

  updateKnob();

if( val != encoder0Pos ){

    val = encoder0Pos;

    updateMenu();

void updateKnob()
{

   n = digitalRead(encoder0PinA);

  if ((encoder0PinALast == LOW) && (n == HIGH)) {

    if (digitalRead(encoder0PinB) == LOW) {
       if( encoder0Pos > 0 ){

           encoder0Pos--;

       }else{

           encoder0Pos = NUM_MENU-1;

       }

    } else {

      if( encoder0Pos < (NUM_MENU-1) ){

          encoder0Pos++;

      }else{

          encoder0Pos = 0;
   }

  }

www.arduinotutorialonline.com/2017/12/arduino-and-oled-display-knob-menu-free.html 3/6
22/7/2019 Arduino and OLED display Knob + Menu FREE CODE

    Serial.print (encoder0Pos);
Arduino Tutorial Online
    Serial.println();

 }

  encoder0PinALast = n;

void updateMenu(){

   char tBu er[22];

 
   display.clearDisplay();

   display.setTextSize(2);

  

   for(int i=0; i < NUM_MENU;i++){

  

        display.setCursor(5,(i*20)+5);

        display.setTextColor(WHITE);

        if( (encoder0Pos) == i ){

          display.setTextColor(BLACK, WHITE);

    }
        display.println(strcpy_P(tBu er, (char*)pgm_read_word(&

(menus[i]))));

        

   }

  

   display.display();

www.arduinotutorialonline.com/2017/12/arduino-and-oled-display-knob-menu-free.html 4/6
22/7/2019 Arduino and OLED display Knob + Menu FREE CODE

Arduino Tutorial Online

ป้ อนความคิดเห็นของคุณ...

บทความทีได ้รับความนิยม

Arduino Counter with LCD display and Push button Tutorial

Schematic diagram

Arduino Sketch …

Control Stepper Motor with Limit Switches - Arduino Programming

Sketch

// de nes pins numbers


const int stepPin = 5; …

www.arduinotutorialonline.com/2017/12/arduino-and-oled-display-knob-menu-free.html 5/6
22/7/2019 Arduino and OLED display Knob + Menu FREE CODE

Arduino Tutorial Online

Control Servo Motor with Push button - Arduino Tutorial

// Sketch

#include <Servo.h>  // add servo library


#de ne sw1_pin 5 …

ขับเคลือนโดย Blogger

www.arduinotutorialonline.com/2017/12/arduino-and-oled-display-knob-menu-free.html 6/6

You might also like