Inhaltsverzeichnis:
- Zubehör:
- Schritt 1: Das Schema
- Schritt 2: Code Arduino
- Schritt 3: Realisierung
- Schritt 4: Code laden und testen und in Box legen
- Schritt 5:
Ein kleines LED-Tester-Projekt
Ich suchte im NET nach einem LED-Tester und nachdem ich eine Idee hatte, wollte ich diesen Tester von Null aufbauen
Zubehör:
Schritt 1: Das Schema
Zum Testen einer LED benötigen Sie einen Stromgenerator.
Das LM317LZ-Datenblatt enthält eine Karte
www.robotroom.com/LED-Tester-Pro-1.html
Auf dieser Site ist kein Code verfügbar
Das Prinzip besteht daher darin, mehrere Spannungen an den Klemmen der LED zu messen
VH Anodenspannung VL Kathodenspannung und subtrahieren sie (VH - VL)
um dann die Spannung an der Klemme des Widerstands zu messen, die vom Strom der LED IL durchflossen und durch ihren Wert R dividiert wird (VR / R = IL)
Schritt 2: Code Arduino
Für den Arduino-Code wurde die Grundidee definiert, ich wollte eine Anzeige auf dem OLED-Bildschirm
die bibliothek ist für eine ssd1306
github.com/adafruit/Adafruit_SSD1306
Zur Messung unterschiedlicher Spannungen siehe
http: //www.instructables.com/id/Arduino-OLED-Volt …
Für verschiedene Menüoptionen siehe
it-edukacija.eu.hr/multidruino/default.html
Icons erstellen siehe
javl.github.io/image2cpp/
Wir bestehen den Test auf einem Testboard
Code hier:
// ================================================
// Autor: PHILOUPAT
// Mars 2019 // Version 1: eine Taste, Anzeigemodi OLED I2C, AREF Standard // =========================== ==================
// I2C-OLED-ANZEIGE: SCL = A5, SDA = A4
// A0 Eingangsreferenz zur Berechnung RL
// A1 Eingang Vbat
// A2 Eingang VL
// A7 Eingang VH
// ================================================
#umfassen
#umfassen
#umfassen
#umfassen
#umfassen
#umfassen
#define SSD1306_128_64
#define SCREEN_WIDTH 128
// OLED-Anzeigebreite in Pixel
#define SCREEN_HEIGHT 64
// OLED-Anzeigehöhe in Pixel
// Erklärung für ein an I2C angeschlossenes SSD1306-Display (SDA, SCL-Pins)
#define OLED_RESET -1 // Pin zurücksetzen # (oder -1, wenn der Arduino-Reset-Pin gemeinsam genutzt wird)
Adafruit_SSD1306-Anzeige (SCREEN_WIDTH, SCREEN_HEIGHT & Wire, OLED_RESET);
# XPOS definieren 0
# YPOS definieren 1
#define DELTAY 2
// # if (SSD1306_LCDHEIGHT! = 64)
// # error ("Höhe falsch, bitte korrigieren Sie Adafruit_SSD1306.h!");
// # endif
const unsigned char PROGMEM batterie = {
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, 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, 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, 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, 0x10, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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 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, 0xff, 0xff};
const Zeichen ohne Vorzeichen PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x18, 0x18, 0x0c, 0x30, 0x0c, 0x30, 0x0c, 0x30, 0x0c, 0x0c, 0x18, 0x0c, 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, 0x0f, 0xe0, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0xff, 0xfe, 0x00, 0x01, 0xff, 0xff, 0x00, 0x03, 0xff, 0xff, 0x00, 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, 0xc0, 0x07, 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, 0x0f, 0xcf, 0xfe, 0xf0, 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, 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, 0x04, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x0c, 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, 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x01, 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, 0xff, 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, 0xffc, 0x00, 0x00, 0x7f, 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, 0xfc, 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, 0xff, 0x ff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xe3, 0xf1, 0xfc, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 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, 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, 0x07, 0xff, 0x80, 0x00, 0x08, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff1, 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, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 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, 0x1f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 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, 0x04, 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, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xffb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 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;
Float 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);
// Standardmäßig erzeugen wir die Hochspannung intern über die 3,3 V-Leitung! (ordentlich!) display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // Initialisiere mit der I2C-Adresse 0x3C (für 128x32)
}
leere Schleife ()
{
float vref = readVcc () / 1000.0;
val = analogRead (A7);
raw = analogRead (A2);
voutH = (val * vref) / 1024,0; // siehe text
voutL = (raw * vref) / 1024,0;
if (voutL> 0)
{
if (mode == 0) // Charakteristik geführt
{
float vref = (readVcc () / 1000.0);
val = analogRead (A7);
raw = analogRead (A2);
ref = analogRead (A0);
voutH = (val * vref) / 1024,0; // siehe text
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 ("LED-Funktion");
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 ();
Verzögerung (Pause);
}
if (mode == 1)
{// Widerstand
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:");
if (RL <0)
{
display.setCursor (30,60);
display.print ("leer");
}
sonst
{
display.setCursor (30,60);
display.print (RL);
display.drawBitmap (73, 46, oms, 15, 15, 1);
}
display.display ();
Verzögerung (Pause);
}
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)
{// ein Balken
display.fillRect (20,45,10,15, SCHWARZ);
}
sonst wenn (vinbat> 7.0 && vinbat <7.8)
{// zwei Balken
display.fillRect (20,45,10,15, SCHWARZ);
display.fillRect (30,45,5,15, WHITE);
display.fillRect (35,45,10,15, SCHWARZ);
}
sonst wenn (vinbat> 7.8 && vinbat <8.4)
{// drei Balken
display.fillRect (20,45,10,15, SCHWARZ);
display.fillRect (30,45,5,15, WHITE);
display.fillRect (35,45,10,15, SCHWARZ);
display.fillRect (45,45,5,15, WHITE);
display.fillRect (50, 45, 10, 15, SCHWARZ);
}
sonst wenn (vinbat> 8.4 && vinbat <8.7)
{// vier bar
display.fillRect (20,45,10,15, SCHWARZ);
display.fillRect (30,45,5,15, WHITE);
display.fillRect (35,45,10,15, SCHWARZ);
display.fillRect (45,45,5,15, WHITE);
display.fillRect (50, 45, 10, 15, SCHWARZ);
display.fillRect (60,45,5,15, WHITE);
display.fillRect (65, 45, 10, 15, SCHWARZ);
}
sonst wenn (vinbat> 8.7 && vinbat <9.0)
{// fünf bar
display.fillRect (20,45,10,15, SCHWARZ);
display.fillRect (30,45,5,15, WHITE);
display.fillRect (35,45,10,15, SCHWARZ);
display.fillRect (45,45,5,15, WHITE);
display.fillRect (50, 45, 10, 15, SCHWARZ);
display.fillRect (60,45,5,15, WHITE);
display.fillRect (65, 45, 10, 15, SCHWARZ);
display.fillRect (75,45,5,15, WHITE);
display.fillRect (80, 45, 10, 15, SCHWARZ);
}
sonst wenn (vinbat> 9.0 && vinbat <9.4)
{
display.fillRect (20,45,10,15, SCHWARZ);
display.fillRect (30,45,5,15, WHITE);
display.fillRect (35,45,10,15, SCHWARZ);
display.fillRect (45,45,5,15, WHITE);
display.fillRect (50, 45, 10, 15, SCHWARZ);
display.fillRect (60,45,5,15, WHITE);
display.fillRect (65, 45, 10, 15, SCHWARZ);
display.fillRect (75,45,5,15, WHITE);
display.fillRect (80, 45, 10, 15, SCHWARZ);
display.fillRect (90,45,5,15, WHITE);
display.fillRect (95, 45, 10, 15, SCHWARZ);
}
display.display (); Verzögerung (Pause); }
}sonst
{
display.clearDisplay ();
display.drawBitmap (0, 0, accueil, 128, 64, 1);
display.display ();
Verzögerung (700);
display.display ();
Verzögerung (1000);
}
}
nichtig bouton ()
{
static unsigned long last_interrupt_time = 0;
vorzeichenlose lange interrupt_time = millis ();
// Wenn Interrupts schneller als 200 ms kommen, nehmen Sie an, dass es sich um einen Sprung handelt, und ignorieren Sie ihn
if (interrupt_time - last_interrupt_time> 220) {
mode ++;
Ton (6,2250,50);
if (mode> 2)
mode = 0;
}
last_interrupt_time = interrupt_time;
}
langes readVcc ()
defined (__ AVR_ATmega2560__) ADMUX = _BV (REFS0)
Schritt 3: Realisierung
Schaltplan und Leiterplatte. Ich verwende EAGLES, um das System und die Platine zu realisieren
ein guter Standort für die Herstellung
jlcpcb.com/
Liste des Materials:
-1 Arduino Mini Pro 5v
http: //www.banggood.com/Wholesale-New-Ver-Pro-Min …
-1 0,96 Zoll OLED-Modul 12864 128x64 Gelb Blau SSD1306 Treiber I2C Serielle selbstleuchtende Anzeigetafel für Arduino Raspberry PI oder andere
Warnung vor Polarität Gnd Vcc oder 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
-1x500R Variable TSR3386F 3/8
http: //www.ebay.fr/itm/Suntan-TSR3386F-3-8-1-turn …
-1x10K variabel TSR3386F 3/8
http: //www.ebay.fr/itm/Suntan-TSR3386F-3-8-1-turn …
-1xSitch ein / aus SS12D00G4 SPDT 1P2T 2 Position 3-polige Leiterplatte
http: //www.ebay.fr/itm/20pcs-SS12D00G4-SPDT-1P2T -…
-2x 1µF Tantale
-3x100nF
-1x1N4148
Mögliches Einschalten einer 9-V-Batterie oder einer 3,7-V-Batterie
-1x3,7V 9V 5V 2A Einstellbarer Step Up 18650 Lithiumbatterieladung Entladung Integriertes Modul
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 -…
Schritt 4: Code laden und testen und in Box legen
Verwenden Sie zum Laden des Codes FTDI
und mit verschiedenen LEDs und Dioden testen
machen Sie den Druck des Kastens 3d
gehe zu thingverse:
www.thingiverse.com/thing:3594143
zusammengebaut und genießen
Dieses Projekt verwendet mehrere Software ist daher eine gute pädagogische Herausforderung PCB - Code 3D - Rechner etc