Updates im Blick dank Arduino
Weiterfüherende Links zum Artikel "Updates im Blick dank Arduino" SCREENGUIDE#35. (07-09/2017)
Versiondisplay
Als Webentwickler sind Sie meist für mehrere Projekte verantwortlich. Ist das Projekt online, müssen auch sicherheitsrelevante Änderungen neben der Weiterentwicklung des Projekts kurzfristig berücksichtigt werden. Hier kann es durchaus hilfreich sein, Informationen zu den Hauptkomponenten Ihres Content Management Systems zu kanalisieren und separat darzustellen.
Auf dieser Seite finden Sie weiterführende Links, Quelltexte und Bezugsquellen zum Artikel "Updates im Blick dank Arduino" SCREENGUIDE#35. (07-09/2017)
Arduino Uno Rev.3
Bezugsquellen
Oled SSD1306 I2C
Bezugsquellen
- 0,96 Zoll I2C IIC SPI OLED Display-Modul (amazon.de)
- DIYMall 0.96" Zoll I2c Oled Modul (amazon.de)
Breadboard Kabel
Bezugsquellen
- DEBO KABELSET Entwicklerboards - Steckbrückenkabel (reichelt.de)
- Neuftech 40x 20cm Steckbrücken für Arduino Raspberry Pi (amazon.de)
Arduino Sketch
#include "SSD1306Ascii.h"
#include "SSD1306AsciiAvrI2c.h"
#include "EtherCard.h"
#define I2C_ADDRESS 0x3C
#define TIMEOUT 2000;
#define ITERATION 60000;
SSD1306AsciiAvrI2c oled;
static byte mymac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
const char website[] PROGMEM = "[API-URL]";
byte Ethernet::buffer[400];
static uint32_t timer;
int channel = 1;
int state = 0;
String response;
void initOled() {
oled.begin(&Adafruit128x64, I2C_ADDRESS);
oled.setFont(Verdana12);
oled.println("init oled...");
delay(1000);
}
void initSerial() {
Serial.begin(9600);
oled.println("init serial...");
Serial.println("init serial...");
delay(1000);
}
void initEthernet() {
oled.println("init ethernet...");
delay(1000);
if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
oled.println("failed to access ethernet controller");
if (!ether.dhcpSetup())
oled.println("DHCP failed");
else {
oled.println("DHCP succeed");
ether.persistTcpConnection(true);
}
delay(1000);
if (!ether.dnsLookup(website)) {
oled.clear();
oled.println("DNS lookup failed.");
}
delay(1000);
}
void setup () {
initOled();
initSerial();
initEthernet();
}
static void response_callback (byte status, word off, word len) {
Ethernet::buffer[off+len] = 0;
response = String((char*) Ethernet::buffer + off);
if(response.indexOf("[***]") == 0){
response.remove(0, 5);
state=3;
}
}
void loop () {
ether.packetLoop(ether.packetReceive());
switch (state) {
case 0:
if (millis() > timer) {
channel = (channel == 2) ? 1 : 2;
state=1;
}
break;
case 1:
if(channel == 1) {
ether.browseUrl(PSTR("[APICHANNELONE]"), "", website, response_callback);
}
else if(channel == 2) {
ether.browseUrl(PSTR("[APICHANNELTWO]"), "", website, response_callback);
}
state=2;
timer = millis() + TIMEOUT;
break;
case 2:
if (millis() > timer) {
state=3;
response="TIMEOUT";
}
break;
case 3:
oled.clear();
oled.print(response);
timer = millis() + ITERATION;
state=0;
break;
default:
break;
}
}
Quellen/Download
- Arduino Sketch Version-Display
- Text only Arduino Library for SSD1306 OLED displays (GitHub)
- EtherCard is a driver for the ENC28J60 chip (GitHub)
- Arduino IDE (arduino.cc)
- i2c_scanner by Frode Grimstad Bang (playground.arduino.cc)
- USB-Messadapter USB-MA1 mit Gehäuse, Komplettbausatz (elv.de)