Spisu treści:
- Kieszonkowe dzieci:
- Krok 1: Schemat
- Krok 2: Kod Arduino
- Krok 3: Realizacja
- Krok 4: Ładowanie i testowanie kodu i umieszczanie w pudełku
- Krok 5:
Mały projekt testera LED
Szukałem testera LED w sieci i po obejrzeniu jakiegoś pomysłu chciałem zbudować ten tester od zera
Kieszonkowe dzieci:
Krok 1: Schemat
Aby przetestować diodę LED, potrzebujesz generatora prądu.
Arkusz danych LM317LZ zawiera mapę, patrz podstawowa strona z pomysłem
www.robotroom.com/LED-Tester-Pro-1.html
brak kodu dostępnego z tej strony
dlatego zasadą jest pomiar kilku napięć na zaciskach diody LED
Napięcie anody VH VL napięcie katody i odejmij je (VH - VL)
następnie zmierzyć napięcie na zacisku rezystancji pokonywanej przez prąd diody LED IL i podzielić przez jego wartość R (VR / R = IL)
Krok 2: Kod Arduino
Dla kodu Arduino zdefiniowano podstawową ideę, którą chciałem wyświetlić na ekranie OLED
biblioteka jest dla ssd1306
github.com/adafruit/Adafruit_SSD1306
Do pomiaru różnych napięć patrz
http: //www.instructables.com/id/Arduino-OLED-Volt …
Zobacz różne opcje menu
it-edukacija.eu.hr/multidruino/default.html
Aby utworzyć ikony, zobacz
javl.github.io/image2cpp/
zdajemy test na tablicy testowej
kod tutaj:
// ================================================
// Autor: PHILOUPAT
// Mars 2019 // wersja 1: jeden przycisk, tryby wyświetlania OLED I2C, domyślny AREF // ============================= ===================
// WYŚWIETLACZ OLED I2C: SCL = A5, SDA = A4
// Referencja wejściowa A0 dla obliczenia RL
// A1 wejście Vbat
// Wejście A2 VL
// Wejście A7 VH
// ================================================
#zawierać
#zawierać
#zawierać
#zawierać
#zawierać
#zawierać
#define SSD1306_128_64
#define SCREEN_WIDTH 128
// Szerokość wyświetlania OLED, w pikselach
#define SCREEN_HEIGHT 64
// Wysokość wyświetlania OLED, w pikselach
// Deklaracja dla wyświetlacza SSD1306 podłączonego do I2C (SDA, SCL pinów)
#define OLED_RESET -1 // Zresetuj pin # (lub -1, jeśli współdzielisz pin reset Arduino)
Adafruit_SSD1306 display (SCREEN_WIDTH, SCREEN_HEIGHT, & Wire, OLED_RESET);
#define XPOS 0
#define YPOS 1
#define DELTAY 2
// # if (SSD1306_LCDHEIGHT! = 64)
// # błąd („Nieprawidłowa wysokość, popraw Adafruit_SSD1306.h!”);
// # endif
const unsigned char PROGMEM batterie = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xfe, 0x00, 0x20, 0x00, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x03, 0xe0, 0x20, 0x00, 0x00, 0x02, 0x20, 0x24, 0x00, 0x00, 0x82, 0x20, 0x24, 0x00, 0x01, 0xe2, 0x20, 0x24, 0x00, 0x00, 0x82, 0x20, 0x20, 0x00, 0x00, 0x82, 0x20, 0x20, 0x00, 0x00, 0x03, 0xe0, 0x20, 0x00, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x02, 0x00, 0x3f, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
const unsigned char PROGMEM resis = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x3f, 0xf8, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x07, 0xfe, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x01, 0xf8, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x03, 0xff, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x ff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
const unsigned char oms PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x18, 0x18, 0x18, 0x0c, 0x30, 0x0c, 0x30, 0x0c, 0x30, 0x0c, 0x30, 0x0c, 0x18, 0x0c, 0x08, 0x18, 0x0c, 0x30, 0x06, 0x30, 0x1e, 0x3c, 0x1c, 0x3c, 0x00, 0x00, 0x00, 0x00};
const unsigned char PROGMEM led = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0xff, 0xfe, 0x00, 0x01, 0xff, 0xff, 0x00, 0x03, 0xff, 0xff, 0x80, 0x03, 0xff, 0xff, 0x80, 0x03, 0xff, 0xff, 0x80, 0x07, 0xff, 0xff, 0xc0, 0x07, 0xff, 0xff, 0xc0, 0x07, 0xff, 0xff, 0xc0, 0x07, 0xff, 0xff, 0xc0, 0x07, 0xff, 0xff, 0xc0, 0x07, 0xff, 0xff, 0xc0, 0x07, 0xff, 0xff, 0xff, 0xc0, 0x07, 0xff, 0xff, 0xc0, 0x07, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xf7, 0xff, 0xf0, 0x1f, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xf8, 0x0f, 0xcf, 0xfe, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0e, 0x00, 0x01, 0xe0, 0x0e, 0x00, 0x00, 0xe0, 0x0e, 0x00, 0x01, 0xe0, 0x0e, 0x00, 0x01, 0xe0, 0x0e, 0x00, 0x01, 0xe0, 0x0e, 0x00, 0x00, 0xe0, 0x0e, 0x00, 0x01, 0xe0, 0x0e, 0x00, 0x01, 0xe0, 0x0e, 0x00, 0x01, 0xe0, 0x0e, 0x00, 0x00, 0xe0, 0x0e, 0x00, 0x00, 0xe0, 0x0e, 0x00, 0x00, 0xc0, 0x0e, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
const unsigned char accueil PROGMEM = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x03, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xe1, 0xd8, 0xc3, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xc1, 0xd9, 0x83, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe6, 0xff, 0xf9, 0x83, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc4, 0xe1, 0xb9, 0x83, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc4, 0xf9, 0xb1, 0xa3, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x83, 0xf3, 0x07, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0x83, 0x73, 0x0f, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xf3, 0xf8, 0x02, 0x03, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xf3, 0x00, 0x00, 0x3f, 0xff, 0xe3, 0xf8, 0x06, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x3f, 0xff, 0xe3, 0xf1, 0xfc, 0x30, 0xff, 0xff, 0xff, 0xff, 0x ff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xe3, 0xf1, 0xfc, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xf3, 0xbc, 0x7c, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xe0, 0x1c, 0x7c, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x04, 0x00, 0x0f, 0xff, 0xc7, 0xe0, 0x3c, 0x7c, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xff, 0xcf, 0xe1, 0xfc, 0x7c, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x07, 0xff, 0x8f, 0xe3, 0xf8, 0x7c, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x07, 0xff, 0x8f, 0xc7, 0xf8, 0xf8, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x07, 0xff, 0x8f, 0xc7, 0xf8, 0xf0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xff, 0x88, 0x07, 0x88, 0x60, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xff, 0x80, 0x00, 0x08, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xf9, 0xff, 0xcf, 0xff, 0x80, 0x00, 0x08, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0xe0, 0x1c, 0x01, 0xc0, 0xe0, 0x1c, 0x01, 0x0f, 0x18, 0x07, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0x80, 0x04, 0x03, 0x00, 0x00, 0x01, 0x1f, 0x98, 0x03, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0x88, 0x88, 0xfe, 0x1e, 0x00, 0x40, 0xff, 0x1f, 0x90, 0xe1, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0x38, 0xf8, 0xfe, 0x3f, 0xb8, 0xf8, 0xfe, 0x1f, 0x91, 0xe1, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0xf9, 0xf8, 0xfe, 0x3f, 0xf8, 0xf8, 0xfe, 0x3f, 0x91, 0xc3, 0xff, 0xff, 0x1f, 0xf9, 0xff, 0xff, 0xf1, 0xf0, 0x0f, 0x07, 0xf8, 0xf8, 0x0e, 0x3f, 0x93, 0x87, 0xff, 0xff, 0x1f, 0xf9, 0xff, 0xff, 0xf1, 0xf0, 0x1f, 0xc1, 0xf8, 0xf0, 0x0e, 0x3f, 0xa0, 0x0f, 0xff, 0xff, 0x9f, 0xf9, 0xff, 0xff, 0xf1, 0xf0, 0xff, 0xf8, 0x70, 0xf0, 0xfe, 0x3f, 0x20, 0x1f, 0xff, 0xff, 0x9f, 0xf9, 0xff, 0xff, 0xf1, 0xf1, 0xff, 0xfc, 0x71, 0xf1, 0xfe, 0x3f, 0x20, 0x0f, 0xff, 0xff, 0x9f, 0xf9, 0xff, 0xff, 0xe1, 0xe3, 0xfd, 0xfc, 0x71, 0xf1, 0xfe, 0x3f, 0x23, 0x8f, 0xff, 0xff, 0xbf, 0xf9, 0xff, 0xff, 0xe1, 0xe3, 0xfc, 0xf8, 0x61, 0xe3, 0xfe, 0x1e, 0x63, 0x87, 0xff, 0xff, 0x9f, 0xf9, 0xff, 0xff, 0xe1, 0xe3, 0xc4, 0x00, 0x61, 0xe1, 0xc6, 0x00, 0x63, 0xc7, 0xff, 0xff, 0x9f, 0xf9, 0xff, 0xff, 0xe1, 0xe0, 0x04, 0x00, 0xe1, 0xe0, 0x07, 0x00, 0xe3, 0xc3, 0xff, 0xff, 0x9f, 0xf9, 0xff, 0xff, 0xe1, 0xe0, 0x07, 0x03, 0xe1, 0xe0, 0x07, 0x01, 0xc3, 0xc3, 0xff, 0xff, 0x 9f, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
int mode = 0;
int pause = 500;
int RL = 0;
int R1 = 10000;
int R2 = 10000;
int R3 = 47;
float raw = 0;
float val = 0;
float ref = 0;
float vbat = 0;
float vin = 0,00;
float voutL = 0,00;
float voutH = 0,00;
float vref = 0,00;
float vled = 0,00;
float vr = 0,00;
pływak IL = 0,00;
float vinref = 0,00;
float vinbat = 0;
void setup ()
{
pinMode (5, INPUT_PULLUP);
pinMode (4, INPUT_PULLUP);
pinMode (3, INPUT_PULLUP);
attachInterrupt (1, bouton, FALLING);
// domyślnie wygenerujemy wysokie napięcie z linii 3.3V wewnętrznie! (schludny!) display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // zainicjuj za pomocą addr 0x2C I2C (dla 128x32)
}
void loop ()
{
float vref = readVcc () / 1000.0;
val = analogRead (A7);
raw = analogRead (A2);
voutH = (val * vref) / 1024.0; // zobacz tekst
voutL = (raw * vref) / 1024.0;
jeśli (voutL> 0)
{
jeśli (tryb == 0) // doprowadził caracteristique
{
float vref = (readVcc () / 1000.0);
val = analogRead (A7);
raw = analogRead (A2);
ref = analogRead (A0);
voutH = (val * vref) / 1024.0; // zobacz tekst
voutL = (raw * vref) / 1024.0;
vled = (voutH-voutL) * (R1 + R2) / R2;
vr = voutL;
IL = vr / R3;
display.clearDisplay ();
display.setTextColor (WHITE);
display.drawBitmap (96, 0, led, 32, 64, 1);
display.setFont ();
display.setFont (& FreeSans9pt7b);
display.setCursor (0,12);
display.print („funkcja LED”);
display.setCursor (0,35);
display.print ("VL:");
display.setCursor (28,35);
display.print (vled);
display.setCursor (72,35);
display.print ("V");
display.setCursor (0,60);
display.print ("IL:");
display.setCursor (28,60);
display.print (IL * 1000);
display.setCursor (75,60);
display.print ("mA");
display.display ();
opóźnienie (pauza);
}
if (mode == 1)
{// opór
float vref = (readVcc () / 1000.0);
val = analogRead (A7);
raw = analogRead (A2);
ref = analogRead (A0);
voutH = (val * vref) / 1024.0;
voutL = (raw * vref) / 1024.0;
vinref = (ref * vref * 2) / 1024.0;
vled = (voutH-voutL) * (R1 + R2) / R2;
IL = voutL / R3;
RL = (vinref-vled) / IL;
display.clearDisplay ();
display.drawBitmap (96, 0, resis, 32, 64, 1);
display.setFont ();
display.setFont (& FreeSans9pt7b);
display.setCursor (0,12);
display.print („Resistance:”);
display.setCursor (0,35);
display.print ("Vin:");
display.setCursor (32,35);
display.print (vinref);
display.setCursor (75,35);
display.print ("V");
display.setCursor (0,60);
display.print ("RL:");
jeśli (RL <0)
{
display.setCursor (30,60);
display.print („pusty”);
}
jeszcze
{
display.setCursor (30,60);
display.print (RL);
display.drawBitmap (73, 46, oms, 15, 15, 1);
}
display.display ();
opóźnienie (pauza);
}
if (mode == 2)
{// baterie
float vref = (readVcc () / 1000.0);
vbat = analogRead (A1);
vinbat = (vbat * vref * 2.3) / 1024.0;
isplay.clearDisplay ();
display.drawBitmap (90, -2, batterie, 36, 21, 1);
display.setFont ();
display.setFont (& FreeSans9pt7b);
display.setCursor (0,14);
display.print („Batterie:”);
//display.fillRect(10,35,90,20,WHITE);
//display.fillRect(12,37,88,18,BLACK);
display.drawRoundRect (15, 40, 95, 24, 8, WHITE);
display.setCursor (0,35);
display.print ("Vbat:");
display.setCursor (50,35);
display.print (vinbat);
display.setCursor (90,35);
display.print ("V");
if (vinbat> 0 && vinbat <7.0)
{// jeden bar
display.fillRect (20,45,10,15, CZARNY);
}
else if (vinbat> 7,0 && vinbat <7,8)
{// dwa słupki
display.fillRect (20,45,10,15, CZARNY);
display.fillRect (30,45,5,15, WHITE);
display.fillRect (35,45,10,15, CZARNY);
}
else if (vinbat> 7,8 && vinbat <8,4)
{// trzy bary
display.fillRect (20,45,10,15, CZARNY);
display.fillRect (30,45,5,15, WHITE);
display.fillRect (35,45,10,15, CZARNY);
display.fillRect (45,45,5,15, WHITE);
display.fillRect (50,45,10,15, CZARNY);
}
else if (vinbat> 8,4 && vinbat <8,7)
{// cztery słupki
display.fillRect (20,45,10,15, CZARNY);
display.fillRect (30,45,5,15, WHITE);
display.fillRect (35,45,10,15, CZARNY);
display.fillRect (45,45,5,15, WHITE);
display.fillRect (50,45,10,15, CZARNY);
display.fillRect (60,45,5,15, WHITE);
display.fillRect (65,45,10,15, CZARNY);
}
else if (vinbat> 8,7 && vinbat <9,0)
{// pięć barów
display.fillRect (20,45,10,15, CZARNY);
display.fillRect (30,45,5,15, WHITE);
display.fillRect (35,45,10,15, CZARNY);
display.fillRect (45,45,5,15, WHITE);
display.fillRect (50,45,10,15, CZARNY);
display.fillRect (60,45,5,15, WHITE);
display.fillRect (65,45,10,15, CZARNY);
display.fillRect (75,45,5,15, WHITE);
display.fillRect (80,45,10,15, CZARNY);
}
inaczej jeśli (vinbat> 9,0 && vinbat <9,4)
{
display.fillRect (20,45,10,15, CZARNY);
display.fillRect (30,45,5,15, WHITE);
display.fillRect (35,45,10,15, CZARNY);
display.fillRect (45,45,5,15, WHITE);
display.fillRect (50,45,10,15, CZARNY);
display.fillRect (60,45,5,15, WHITE);
display.fillRect (65,45,10,15, CZARNY);
display.fillRect (75,45,5,15, WHITE);
display.fillRect (80,45,10,15, CZARNY);
display.fillRect (90,45,5,15, WHITE);
display.fillRect (95,45,10,15, CZARNY);
}
display.display (); opóźnienie (pauza); }
}jeszcze
{
display.clearDisplay ();
display.drawBitmap (0, 0, accueil, 128, 64, 1);
display.display ();
opóźnienie (700);
display.display ();
opóźnienie (1000);
}
}
void bouton ()
{
static unsigned long last_interrupt_time = 0;
unsigned long interrupt_time = millis ();
// Jeśli przerwania przychodzą szybciej niż 200ms, załóżmy, że jest to odbijanie i ignorowanie
if (interrupt_time - last_interrupt_time> 220) {
tryb ++;
ton (6,2250,50);
jeśli (tryb> 2)
mode = 0;
}
last_interrupt_time = interrupt_time;
}
long readVcc ()
zdefiniowany (__ AVR_ATmega2560__) ADMUX = _BV (REFS0)
Krok 3: Realizacja
Schemat i PCB. Używam EAGLES do realizacji shem i pcb
dobra strona do produkcji
jlcpcb.com/
Lista materiałów:
-1 Arduino mini pro 5v
http: //www.banggood.com/Wholesale-New-Ver-Pro-Min …
-1 0.96 Inch Moduł OLED 12864 128x64 Żółty Niebieski SSD1306 Sterownik I2C Seryjny Self-Luminous Display Board dla Arduino Raspberry PI lub innego
ostrzeżenie o polaryzacji Gnd Vcc lub Vcc Gnd
http: //www.amazon.com/UCTRONICS-SSD1306-Self-Lumi …
http: //www.ebay.fr/itm/0-96-I2C-IIC-SPI-Serial-12 …
-1 LM317 LZ
http: //www.ebay.fr/itm/5Pcs-LM317LZ-LM317L-LM317 -…
http: //www.amazon.com/LM317LZ-Voltage-Regulator-I …
-1 MCP1702 5V
http: //www.ebay.fr/itm/Microchip-MCP1702-500-TO-9 …
http: //www.amazon.com/5002E-MCP1702-1702-5002E-MC …
-2x10K 2x470K 2x 47R 1 / 8W
Zmienna -1x500R TSR3386F 3/8
http: //www.ebay.fr/itm/Suntan-TSR3386F-3-8-1-turn …
-1x10K zmienny TSR3386F 3/8
http: //www.ebay.fr/itm/Suntan-TSR3386F-3-8-1-turn …
-1xsitch on / off SS12D00G4 SPDT 1P2T 2 Pozycja 3 Pin PCB
http: //www.ebay.fr/itm/20pcs-SS12D00G4-SPDT-1P2T -…
-2x tantale 1µF
-3x100nF
-1x1N4148
Możliwa moc na baterie 9V lub baterie lipo 3.7V
-1x3.7V 9V 5V 2A Regulowany zintegrowany moduł rozładowania baterii litowej 18650 Step Up
http: //www.banggood.com/3pcs-3_7V-9V-5V-2A-Adjust …
-1xLIPO batterie 3.7V 400mAh
http: //www.ebay.fr/itm/Batterie-403035-Lipo-3-7v -…
Krok 4: Ładowanie i testowanie kodu i umieszczanie w pudełku
Aby załadować kod, użyj FTDI
i przetestuj z różnymi diodami i diodami
zrób pudełko druku 3d
dostać się do rzeczy odwrotnej:
www.thingiverse.com/thing:3594143
zmontowane i cieszę się
ten projekt wykorzystuje kilka programów, dlatego dobry kod edukacyjny pcb 3d kalkulator elektroniczny itp