some arduino sketches
This commit is contained in:
parent
94b5cae9ae
commit
ac052d190a
131
arduino/i2c-lcd/i2c-lcd.ino
Normal file
131
arduino/i2c-lcd/i2c-lcd.ino
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
#define SSD1306_NO_SPLASH
|
||||||
|
|
||||||
|
// OLED display width and height, in pixels
|
||||||
|
#define SCREEN_WIDTH 128
|
||||||
|
#define SCREEN_HEIGHT 32
|
||||||
|
#define OLED_RESET -1
|
||||||
|
// i2c address for oled
|
||||||
|
///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
|
||||||
|
#define SCREEN_ADDRESS 0x3C
|
||||||
|
|
||||||
|
#include <Adafruit_SSD1306.h>
|
||||||
|
#include <splash.h>
|
||||||
|
#include <Adafruit_GrayOLED.h>
|
||||||
|
#include <gfxfont.h>
|
||||||
|
#include <Adafruit_GFX.h>
|
||||||
|
#include <Adafruit_SPITFT.h>
|
||||||
|
#include <Adafruit_SPITFT_Macros.h>
|
||||||
|
#include <LiquidCrystal_I2C.h>
|
||||||
|
|
||||||
|
// set the LCD address to 0x27 for a 16 chars and 2 line display
|
||||||
|
LiquidCrystal_I2C lcd(0x27, 16, 2);
|
||||||
|
|
||||||
|
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
lcd.init();
|
||||||
|
lcd.backlight();
|
||||||
|
lcd.setCursor(0, 0);
|
||||||
|
lcd.print("0x123456789abcde");
|
||||||
|
lcd.setCursor(0, 1);
|
||||||
|
lcd.print("fghijklmnopqrstu");
|
||||||
|
|
||||||
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
|
||||||
|
if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
|
||||||
|
Serial.println(F("SSD1306 allocation failed"));
|
||||||
|
for (;;); // Don't proceed, loop forever
|
||||||
|
}
|
||||||
|
|
||||||
|
display.display();
|
||||||
|
delay(50); // Pause for 2 seconds
|
||||||
|
|
||||||
|
// Clear the buffer
|
||||||
|
display.clearDisplay();
|
||||||
|
|
||||||
|
testdrawstyles(); // Draw 'stylized' characters
|
||||||
|
|
||||||
|
panic();
|
||||||
|
//
|
||||||
|
// // Invert and restore display, pausing in-between
|
||||||
|
// display.invertDisplay(true);
|
||||||
|
// delay(1000);
|
||||||
|
// display.invertDisplay(false);
|
||||||
|
// delay(1000);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void panic() {
|
||||||
|
for (;;) {
|
||||||
|
display.invertDisplay(true);
|
||||||
|
delay(1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LINE_HEIGHT_PX 9
|
||||||
|
|
||||||
|
void testdrawstyles(void) {
|
||||||
|
display.clearDisplay();
|
||||||
|
display.setTextSize(1); // Normal 1:1 pixel scale
|
||||||
|
display.setTextColor(SSD1306_WHITE); // Draw white text
|
||||||
|
display.setCursor(0, 0 * LINE_HEIGHT_PX);
|
||||||
|
display.println(F("123456789112345678921"));
|
||||||
|
display.setCursor(0, 1 * LINE_HEIGHT_PX);
|
||||||
|
display.println(F("234567893123456789412"));
|
||||||
|
display.setCursor(0, 2 * LINE_HEIGHT_PX);
|
||||||
|
display.println(F("345678951234567896123"));
|
||||||
|
display.display();
|
||||||
|
|
||||||
|
display.startscrollright(0x00, 0xFF);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
display.setTextColor(SSD1306_BLACK, SSD1306_WHITE); // Draw 'inverse' text
|
||||||
|
display.println(3.141592);
|
||||||
|
|
||||||
|
display.setTextSize(2); // Draw 2X-scale text
|
||||||
|
display.setTextColor(SSD1306_WHITE);
|
||||||
|
display.print(F("0x")); display.println(0xDEADBEEF, HEX);
|
||||||
|
|
||||||
|
display.display();
|
||||||
|
delay(2000);
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
void testscrolltext(void) {
|
||||||
|
display.clearDisplay();
|
||||||
|
|
||||||
|
display.setTextSize(1.5); // Draw 2X-scale text
|
||||||
|
display.setTextColor(SSD1306_WHITE);
|
||||||
|
display.setCursor(10, 0);
|
||||||
|
display.println(F("1337CAFE"));
|
||||||
|
display.display(); // Show initial text
|
||||||
|
delay(70);
|
||||||
|
|
||||||
|
// Scroll in various directions, pausing in-between:
|
||||||
|
display.startscrollright(0x00, 0x0F);
|
||||||
|
delay(2000);
|
||||||
|
display.stopscroll();
|
||||||
|
delay(1000);
|
||||||
|
display.startscrollleft(0x00, 0x0F);
|
||||||
|
delay(2000);
|
||||||
|
display.stopscroll();
|
||||||
|
delay(1000);
|
||||||
|
display.startscrolldiagright(0x00, 0x07);
|
||||||
|
delay(2000);
|
||||||
|
display.startscrolldiagleft(0x00, 0x07);
|
||||||
|
delay(2000);
|
||||||
|
display.stopscroll();
|
||||||
|
delay(1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
*/
|
51
arduino/infrared-read/infrared-read.ino
Normal file
51
arduino/infrared-read/infrared-read.ino
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
ESP8266 BlinkWithoutDelay by Simon Peter
|
||||||
|
Blink the blue LED on the ESP-01 module
|
||||||
|
Based on the Arduino Blink without Delay example
|
||||||
|
This example code is in the public domain
|
||||||
|
|
||||||
|
The blue LED on the ESP-01 module is connected to GPIO1
|
||||||
|
(which is also the TXD pin; so we cannot use Serial.print() at the same time)
|
||||||
|
|
||||||
|
Note that this sketch uses LED_BUILTIN to find the pin with the internal LED
|
||||||
|
*/
|
||||||
|
#define IR_RX_PIN 14
|
||||||
|
#define IR_TX_PIN 12
|
||||||
|
#define SERIAL_BPS 115200
|
||||||
|
|
||||||
|
#define POWER_BUTTON 0xFFEA15
|
||||||
|
#define EDIT_BUTTON 0xFF7887
|
||||||
|
#define EXIT_BUTTON 0xFF38C7
|
||||||
|
#define ONE_BUTTON 0xFF08F7
|
||||||
|
#define TWO_BUTTON 0xFF8877
|
||||||
|
#define THREE_BUTTON 0xFF48B7
|
||||||
|
#define FOUR_BUTTON 0xFFC837
|
||||||
|
#define FIVE_BUTTON 0xFF28D7
|
||||||
|
#define SIX_BUTTON 0xFFA857
|
||||||
|
#define SEVEN_BUTTON 0xFFE817
|
||||||
|
#define EIGHT_BUTTON 0xFF18E7
|
||||||
|
#define NINE_BUTTON 0xFF9867
|
||||||
|
#define ZERO_BUTTON 0xFFB847
|
||||||
|
|
||||||
|
#include <IRremote.h>
|
||||||
|
|
||||||
|
IRrecv irrecv(IR_RX_PIN);
|
||||||
|
decode_results results;
|
||||||
|
|
||||||
|
int ledState = LOW;
|
||||||
|
volatile byte IRInputState;
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
IrReceiver.begin(IR_RX_PIN, ENABLE_LED_FEEDBACK); // Start the receiver
|
||||||
|
pinMode(LED_BUILTIN, OUTPUT);
|
||||||
|
Serial.begin(SERIAL_BPS);
|
||||||
|
Serial.print("herro booted\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
if (IrReceiver.decode()) {
|
||||||
|
Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX);
|
||||||
|
IrReceiver.printIRResultShort(&Serial); // optional use new print version
|
||||||
|
IrReceiver.resume(); // Enable receiving of the next value
|
||||||
|
}
|
||||||
|
}
|
82
arduino/quadalphanum/quadalphanum.ino
Normal file
82
arduino/quadalphanum/quadalphanum.ino
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
// Demo the quad alphanumeric display LED backpack kit
|
||||||
|
// scrolls through every character, then scrolls Serial
|
||||||
|
// input onto the display
|
||||||
|
|
||||||
|
#include <Wire.h>
|
||||||
|
#include <Adafruit_GFX.h>
|
||||||
|
#include "Adafruit_LEDBackpack.h"
|
||||||
|
|
||||||
|
Adafruit_AlphaNum4 one = Adafruit_AlphaNum4();
|
||||||
|
Adafruit_AlphaNum4 two = Adafruit_AlphaNum4();
|
||||||
|
|
||||||
|
unsigned long ticks;
|
||||||
|
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(9600);
|
||||||
|
|
||||||
|
one.begin(0x71); // pass in the address
|
||||||
|
two.begin(0x70);
|
||||||
|
|
||||||
|
one.writeDigitRaw(3, 0x0);
|
||||||
|
one.writeDigitRaw(0, 0xFFFF);
|
||||||
|
one.writeDisplay();
|
||||||
|
delay(200);
|
||||||
|
one.writeDigitRaw(0, 0x0);
|
||||||
|
one.writeDigitRaw(1, 0xFFFF);
|
||||||
|
one.writeDisplay();
|
||||||
|
delay(200);
|
||||||
|
one.writeDigitRaw(1, 0x0);
|
||||||
|
one.writeDigitRaw(2, 0xFFFF);
|
||||||
|
one.writeDisplay();
|
||||||
|
delay(200);
|
||||||
|
one.writeDigitRaw(2, 0x0);
|
||||||
|
one.writeDigitRaw(3, 0xFFFF);
|
||||||
|
one.writeDisplay();
|
||||||
|
delay(200);
|
||||||
|
|
||||||
|
one.clear();
|
||||||
|
one.writeDisplay();
|
||||||
|
|
||||||
|
two.clear();
|
||||||
|
two.writeDisplay();
|
||||||
|
|
||||||
|
one.writeDigitAscii(0, '1');
|
||||||
|
one.writeDigitAscii(1, '2');
|
||||||
|
one.writeDigitAscii(2, '0');
|
||||||
|
one.writeDigitAscii(3, '0');
|
||||||
|
two.writeDigitAscii(0, '0');
|
||||||
|
two.writeDigitAscii(1, '1');
|
||||||
|
two.writeDigitAscii(2, '2');
|
||||||
|
two.writeDigitAscii(3, '3');
|
||||||
|
one.writeDisplay();
|
||||||
|
two.writeDisplay();
|
||||||
|
|
||||||
|
delay(300);
|
||||||
|
|
||||||
|
Serial.println("Start typing to display!");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char displaybuffer[4] = {' ', ' ', ' ', ' '};
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
|
||||||
|
ticks = millis();
|
||||||
|
|
||||||
|
|
||||||
|
sprintf(displaybuffer, "%02d", ticks/1000);
|
||||||
|
sprintf(displaybuffer+2, "%02d", ticks-(ticks/1000)*1000);
|
||||||
|
|
||||||
|
Serial.println(displaybuffer);
|
||||||
|
|
||||||
|
// set every digit to the buffer
|
||||||
|
two.writeDigitAscii(0, displaybuffer[0]);
|
||||||
|
two.writeDigitAscii(1, displaybuffer[1]);
|
||||||
|
two.writeDigitAscii(2, displaybuffer[2]);
|
||||||
|
two.writeDigitAscii(3, displaybuffer[3]);
|
||||||
|
|
||||||
|
// write it out!
|
||||||
|
two.writeDisplay();
|
||||||
|
delay(10);
|
||||||
|
}
|
110
arduino/wwvb/wwvb.ino
Normal file
110
arduino/wwvb/wwvb.ino
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
/*
|
||||||
|
ESP8266 Blink by Simon Peter
|
||||||
|
Blink the blue LED on the ESP-01 module
|
||||||
|
This example code is in the public domain
|
||||||
|
|
||||||
|
The blue LED on the ESP-01 module is connected to GPIO1
|
||||||
|
(which is also the TXD pin; so we cannot use Serial.print() at the same time)
|
||||||
|
|
||||||
|
Note that this sketch uses LED_BUILTIN to find the pin with the internal LED
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define WWV_SIGNAL_PIN 14
|
||||||
|
|
||||||
|
void ICACHE_RAM_ATTR readLevel();
|
||||||
|
|
||||||
|
volatile byte wwvbInState; // store receiver signal level
|
||||||
|
|
||||||
|
byte prevWwvbInState; // store previous signal level
|
||||||
|
unsigned int prevEdgeMillis; // store time signal was read
|
||||||
|
byte bitVal; // bit decoded 0, 1 or Mark
|
||||||
|
byte badBit; // bad bit, noise detected
|
||||||
|
byte prevMark; // store previous mark bit
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
pinMode(LED_BUILTIN, OUTPUT); // Initialize the LED_BUILTIN pin as an output
|
||||||
|
pinMode(WWV_SIGNAL_PIN, INPUT);
|
||||||
|
attachInterrupt(digitalPinToInterrupt(WWV_SIGNAL_PIN), readLevel, CHANGE); // fire interrupt on edge detected
|
||||||
|
Serial.begin(9600);
|
||||||
|
Serial.print("herro booted\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// the loop function runs over and over again forever
|
||||||
|
void loop() {
|
||||||
|
if (wwvbInState != prevWwvbInState) {
|
||||||
|
pulseValue();
|
||||||
|
prevWwvbInState = wwvbInState;
|
||||||
|
}
|
||||||
|
yield();
|
||||||
|
}
|
||||||
|
|
||||||
|
void pulseValue() {
|
||||||
|
unsigned int edgeMillis = millis(); // save current time
|
||||||
|
badBit = 0; // set noise counter to zero
|
||||||
|
if (wwvbInState == 1) { // rising edge
|
||||||
|
prevEdgeMillis = edgeMillis; // set previous time to current
|
||||||
|
}
|
||||||
|
else { // falling edge
|
||||||
|
int pulseLength = edgeMillis - prevEdgeMillis; // calculate pulse length millis
|
||||||
|
if (pulseLength < 100) { // less than 100ms, noise pulses
|
||||||
|
badBit = 1;
|
||||||
|
}
|
||||||
|
else if (pulseLength < 400) { // 800ms carrier drop mark
|
||||||
|
bitVal = 2;
|
||||||
|
}
|
||||||
|
else if (pulseLength < 700) { // 500ms carrier drop one
|
||||||
|
bitVal = 1;
|
||||||
|
}
|
||||||
|
else { // 200ms carrier drop zero
|
||||||
|
bitVal = 0;
|
||||||
|
}
|
||||||
|
if (badBit == 0) {
|
||||||
|
printBitVal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void readLevel() {
|
||||||
|
wwvbInState = digitalRead(WWV_SIGNAL_PIN); // read signal level
|
||||||
|
digitalWrite(LED_BUILTIN, !wwvbInState); // flash WWVB receiver indicator pin
|
||||||
|
yield();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void printBitVal() {
|
||||||
|
if ((bitVal == 2) && (prevMark == 0)) {
|
||||||
|
Serial.print(" : ");
|
||||||
|
|
||||||
|
prevMark = 1;
|
||||||
|
}
|
||||||
|
else if ((bitVal == 2) && (prevMark == 1)) {
|
||||||
|
Serial.print("\nBit Value: ");
|
||||||
|
Serial.print("| ");
|
||||||
|
|
||||||
|
prevMark = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Serial.print(bitVal, DEC);
|
||||||
|
prevMark = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* Time display functions
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
void printTime() {
|
||||||
|
Serial.print("?x00?y0?f"); // movie cursor to line 1 char 1, clear screen
|
||||||
|
}
|
||||||
|
|
||||||
|
// LCD routines to initialize LCD and clear screen
|
||||||
|
void lcdInit() { // using P H Anderson Serial LCD driver board
|
||||||
|
Serial.print("?G216"); // configure driver for 2 x 16 LCD
|
||||||
|
delay(300);
|
||||||
|
Serial.print("?BDD"); // set backlight brightness
|
||||||
|
delay(300);
|
||||||
|
Serial.print("?f"); // clear screen
|
||||||
|
Serial.print("?c0"); // set cursor off
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user