นโยบายการจัดการความรู้ มหาวิทยาลัยสงขลานครินทร์ 1.ให้ใช้เครื่องมือการจัดการความรู้ผลักดัน คุณภาพคน และกระบวนทำงาน 2.ส่งเสริมการแลกเปลี่ยนประสบการณ์การทำงาน จากหน้างาน 3.ส่งเสริมให้มีเวทีเรียนรู้ร่วมกัน
อ่าน: 834
ความเห็น: 0

มาวาด Bitmap บนจอ OLED และ ESP8266 กัน

ESP8266

มาวาด Bitmap บนจอ OLED และ ESP8266 กัน

น้อง Wasin แห่ง Chiang Mai Maker Club แนะนำเรื่องการวาด Bitmap บนจอ OLED โดยใช้เครื่องมือยอดฮิตชื่อ LCD Assistant ช่วยให้เราแปลงภาพ Bitmap เป็นโค้ดตัวแปร Array ในภาษา C++ จากนั้นเราก็เอาโค้ดที่ได้นี้เอาไปใช้งาน แต่… ผมไม่มี Windows ก็เลยต้องหาวิธีอื่น T_T

หลังจากที่ค้นจาก Google ไปพักใหญ่ ก็ได้เครื่องมือเหมือนกับ LCD Assistant แต่เป็นบริการแบบออนไลน์ สามารถเลือกไฟล์จากเครื่องของเราแล้วสั่งแปลงได้เลย เครื่องมือชื่อ Image to Byte array ลองกดเข้าไปดู
 

เตรียมไฟล์ภาพ black & white ขนาดอย่าเกินความกว้างและความสูงของจอ OLED แบบนี้

กด Browse แล้วกดปุ่ม Convert ได้เลยเราจะได้ โค้ดออกมาแบบนี้

จากนั้นเอาโค้ดมาใช้ได้เลย ตัวอย่าง

 

  // Example testing sketch for various DHT humidity/temperature sensors
  // Written by ladyada, public domain
  #include "ESP8266WiFi.h"
  #include "DHT.h"
   
  // OLED Library
  #include <Wire.h>
  #include <Adafruit_GFX.h>
  #include <ESP_Adafruit_SSD1306.h>
   
  #define OLED_RESET 4
  Adafruit_SSD1306 display(OLED_RESET);
   
  #define DHTPIN 16 // what pin we're connected to
   
  // Uncomment whatever type you're using!
  //#define DHTTYPE DHT11 // DHT 11
  #define DHTTYPE DHT22 // DHT 22 (AM2302)
  //#define DHTTYPE DHT21 // DHT 21 (AM2301)
   
  // Connect pin 1 (on the left) of the sensor to +5V
  // NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
  // to 3.3V instead of 5V!
  // Connect pin 2 of the sensor to whatever your DHTPIN is
  // Connect pin 4 (on the right) of the sensor to GROUND
  // Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor
   
  // Initialize DHT sensor for normal 16mhz Arduino
  DHT dht(DHTPIN, DHTTYPE,15);
  // NOTE: For working with a faster chip, like an Arduino Due or Teensy, you
  // might need to increase the threshold for cycle counts considered a 1 or 0.
  // You can do this by passing a 3rd parameter for this threshold. It's a bit
  // of fiddling to find the right value, but in general the faster the CPU the
  // higher the value. The default for a 16mhz AVR is a value of 6. For an
  // Arduino Due that runs at 84mhz a value of 30 works.
  // Example to initialize DHT sensor for Arduino Due:
  //DHT dht(DHTPIN, DHTTYPE, 30);
   
  //Byte array of bitmap of 48 x 50 px:
   
  byte img [] = {
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0,
  0x0, 0x0, 0x3f, 0xfc, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, 0x1, 0xfc,
  0x3f, 0x80, 0x0, 0x0, 0x3, 0xe0, 0x7, 0xc0, 0x0, 0x0, 0x7, 0x80, 0x1, 0xe0, 0x0,
  0x0, 0xff, 0x0, 0x0, 0xff, 0x0, 0x3, 0xfe, 0x0, 0x0, 0x7f, 0xc0, 0x7, 0xe2, 0x0,
  0x0, 0x4f, 0xe0, 0x7, 0x80, 0x0, 0x0, 0x1, 0xe0, 0xf, 0x0, 0x0, 0x0, 0x0, 0xf0,
  0x1e, 0x0, 0x0, 0x0, 0x0, 0x70, 0xe, 0x0, 0x0, 0x0, 0x0, 0x78, 0xc, 0x0, 0x0,
  0x0, 0x0, 0x30, 0xc, 0x0, 0x0, 0x0, 0x0, 0x30, 0xc, 0x0, 0x0, 0x0, 0x0, 0x30,
  0xe, 0x0, 0x0, 0x0, 0x0, 0x70, 0x1e, 0x0, 0x0, 0x0, 0x0, 0x70, 0xf, 0x0, 0x0,
  0x0, 0x0, 0xf0, 0x7, 0x80, 0x0, 0x0, 0x1, 0xe0, 0x7, 0xe3, 0x80, 0x1, 0xc7, 0xe0,
  0x3, 0xff, 0xc0, 0x3, 0xff, 0xc0, 0x0, 0xff, 0xf0, 0xf, 0xff, 0x0, 0x0, 0x20, 0xfc,
  0x3f, 0x4, 0x0, 0x0, 0x0, 0x3f, 0xfc, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0,
  0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0x0,
  0x0, 0x0, 0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x1f, 0x0, 0x0, 0x20, 0x0, 0x0, 0x1f, 0x0, 0x0, 0x20, 0x0, 0x0, 0xe, 0x0,
  0x0, 0x70, 0x0, 0x0, 0x0, 0x1, 0x80, 0x70, 0x0, 0x0, 0x0, 0x1, 0x80, 0xf8, 0x0,
  0x0, 0x0, 0x3, 0xc0, 0xf8, 0x0, 0x0, 0x0, 0x3, 0xc0, 0xf8, 0x0, 0x0, 0x0, 0x3,
  0xc0, 0x70, 0x0, 0x0, 0x0, 0x3, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xc0, 0x0, 0x0,
  0x0, 0x0, 0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
   
  };
   
  void setup() {
  Serial.begin(9600);
  Serial.println("DHTxx test!");
   
  // dht begin
  dht.begin();
   
  // set display
  display.begin(SSD1306_SWITCHCAPVCC, 0x78>>1);
  display.display();
  delay(2000);
  display.clearDisplay();
  }
   
  void showTemp(float temp,float hud) {
  display.drawBitmap(0, 5, img, 48, 50, 1);
  // text display tests
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(52,10);
  display.print(temp);
  display.println("C");
  display.setCursor(52,30);
  display.print(hud);
  display.println("%");
  display.display();
  display.clearDisplay();
  }
   
  void loop() {
  // Wait a few seconds between measurements.
  delay(1000);
   
  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius
  float t = dht.readTemperature();
   
  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t)) {
  Serial.println("Failed to read from DHT sensor!");
  return;
  }
   
  // show in serial monitor
  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.print(" *C \n");
   
  // show temp
  showTemp(t,h);
  }

ref:http://manytools.org/hacker-tools/image-to-byte-array/

Sections: Miscellaneous
License: ซีซี: แสดงที่มา-ไม่ใช้เพื่อการค้า-อนุญาตแบบเดียวกัน Cc-by-nc-sa
created: 18 November 2016 22:37 Modified: 18 November 2016 22:37 [ Report Abuse ]
ดอกไม้
People who like this: Ico24 pompom.
People Who Like This
 
Facebook
Twitter
Google

Other Posts By This Blogger

ความเห็น

ไม่มีความเห็น

ร่วมแสดงความเห็นในหน้านี้

ชื่อ:
อีเมล:
IP แอดเดรส: 34.238.194.166
ข้อความ:  
เรียกเครื่องมือจัดการข้อความ
   
ยกเลิก หรือ