daily_automated

This commit is contained in:
paolo.iocco
2023-03-13 09:05:51 +00:00
parent ab2532ebf2
commit 4da858fb92
515 changed files with 226616 additions and 0 deletions

View File

@@ -0,0 +1,11 @@
[{000214A0-0000-0000-C000-000000000046}]
Prop4=31,Arduino Scuola - Simple Arduino Based Lego Power Function Receiver
Prop3=19,2
[{A7AF692E-098D-4C08-A225-D433CA835ED0}]
Prop5=3,0
Prop9=19,0
[InternetShortcut]
URL=http://scuola.arduino.cc/courses/lessons/view/rX9kq6D
IDList=
[{9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}]
Prop5=8,Microsoft.Website.E49474D7.212C2F5A

View File

@@ -0,0 +1,99 @@
#define CH1_LEFT_UP 0
#define CH1_LEFT_DOWN 1
#define CH1_RIGHT_UP 2
#define CH1_RIGHT_DOWN 3
#define CH1_BREAK 4
#define CH2_LEFT_UP 5
#define CH2_LEFT_DOWN 6
#define CH2_RIGHT_UP 7
#define CH2_RIGHT_DOWN 8
#define CH2_BREAK 9
#define CH3_LEFT_UP 10
#define CH3_LEFT_DOWN 11
#define CH3_RIGHT_UP 12
#define CH3_RIGHT_DOWN 13
#define CH3_BREAK 14
#define CH4_LEFT_UP 15
#define CH4_LEFT_DOWN 16
#define CH4_RIGHT_UP 17
#define CH4_RIGHT_DOWN 18
#define CH4_BREAK 19
int legoCode(unsigned long value)
{
// Channel #1
if ((value == 0x29F9B686) || (value == 0xF741C457) || (value == 0xAAE8B1A9) || (value == 0x29F9B687) || (value == 0x4C088112)
|| (value == 0x751C2330) || (value == 0x84D3E822) || (value == 0x327D2380) || (value == 0xCC7485C0) || (value == 0xC93A2FD8)
|| (value == 0x5BE3DE61) || (value == 0x84D3E823) || (value == 0x37E1671F) || (value == 0xC93A2FD9) || (value == 0xA8D65F64)
|| (value == 0x30FA515) || (value == 0x7C844C29) || (value == 0x72716F7C) || (value == 0x3EDE3EE6) || (value == 0x9B07604D)
|| (value == 0xC31CFC39) || (value == 0xF741C456) || (value == 0x5BC3FD7) || (value == 0x490DB9CD) || (value == 0x490DB9CD)
|| (value == 0x47B2AE76) || (value == 0x1D57D358) || (value == 0xB3C482C5) || (value == 0x3C9218FB) || (value == 0x6A8C7A18)
|| (value == 0x1C813947) || (value == 0xE9347505) || (value == 0xE04907D) || (value == 0x1C813947) || (value == 0xAAE8B1A8)
|| (value == 0x2BF1225C) || (value == 0xEBFCA4A) || (value == 0xB62A0F52) || (value == 0x27818B6B) || (value == 0x3FC05E89)
|| (value == 0xA4B77066))
return CH1_LEFT_UP;
else if ((value == 0x986F760F) || (value == 0x1A81FCA3) || (value == 0x3F0813BF) || (value == 0x40081550) || (value == 0xE24A5F12)
|| (value == 0xE76C0982) || (value == 0xCFE32349) || (value == 0xCAD1526) || (value == 0x2E8F6A70) || (value == 0xE14A5D81)
|| (value == 0x6F81D89A) || (value == 0x9FE9FC3D) || (value == 0xDEBA120E) || (value == 0x5FE714A3) || (value == 0xEFFA2F89)
|| (value == 0x6F81D89A) || (value == 0x5FE714A3) || (value == 0x56602C4A) || (value == 0x9BC5A1E1) || (value == 0x7D19653E)
|| (value == 0xEFFA2F89) || (value == 0x9CBCA36E) || (value == 0x1324C180) || (value == 0xD1F837D7) || (value == 0x1324C180)
|| (value == 0xAFCEA13D) || (value == 0x1324C180) || (value == 0xD1F837D7) || (value == 0xEFFA2F89) || (value == 0xE1706B68)
|| (value == 0x63CDEB9F) || (value == 0x1324C180) || (value == 0xD1F837D7) || (value == 0x9CBCA36E) || (value == 0x5E3DD06D)
|| (value == 0x9CBCA36E) || (value == 0x1324C180))
return CH1_LEFT_DOWN;
else if ((value == 0x9207B09) || (value == 0xCAF24598))
return CH1_RIGHT_UP;
else if ((value == 0x1DDB9529) || (value == 0xD1EF1AD2))
return CH1_RIGHT_DOWN;
else if (( value == 0xBB11886E) || (value == 0x395A9125))
return CH1_BREAK;
// Channel #2
else if ((value == 0x53FBF187))
return CH2_LEFT_UP;
else if ((value == 0x77E060CC))
return CH2_LEFT_DOWN;
else if ((value == 0x620CD0AC))
return CH2_RIGHT_UP;
else if ((value == 0xDF57EE8C))
return CH2_RIGHT_DOWN;
else if ((value == 0x25B49957))
return CH2_BREAK;
// Channel #3
else if ((value == 0x5B91118A))
return CH3_LEFT_UP;
else if ((value == 0x6538FDC5))
return CH3_LEFT_DOWN;
else if ((value == 0xE76F5749))
return CH3_RIGHT_UP;
else if ((value == 0xE6ED0E93))
return CH3_RIGHT_DOWN;
else if ((value == 0x790D20D8))
return CH3_BREAK;
// Channel #4
else if ((value == 0x6FDB5CB))
return CH4_LEFT_UP;
else if ((value == 0x10A5A202))
return CH4_LEFT_DOWN;
else if ((value == 0x94DBFEAC))
return CH4_RIGHT_UP;
else if ((value == 0x9059AFAA))
return CH4_RIGHT_DOWN;
else if ((value == 0xCBA07975))
return CH4_BREAK;
else return -1;
}

View File

@@ -0,0 +1,132 @@
# Arduino Make file. Refer to https://github.com/sudar/Arduino-Makefile
#
#BOARD_TAG = uno
BOARD_TAG = pro
BOARD_SUB = 16MHzatmega328
include ../paths.mk
include ../Arduino.mk
# --- leonardo (or pro micro w/leo bootloader)
#BOARD_TAG = leonardo
#MONITOR_PORT = /dev/ttyACM0
#include /usr/share/arduino/Arduino.mk
# --- mega2560 ide 1.0
#BOARD_TAG = mega2560
#ARDUINO_PORT = /dev/ttyACM0
#include /usr/share/arduino/Arduino.mk
# --- mega2560 ide 1.6
#BOARD_TAG = mega
#BOARD_SUB = atmega2560
#MONITOR_PORT = /dev/ttyACM0
#ARDUINO_DIR = /where/you/installed/arduino-1.6.5
#include /usr/share/arduino/Arduino.mk
# --- nano ide 1.0
#BOARD_TAG = nano328
#MONITOR_PORT = /dev/ttyUSB0
#include /usr/share/arduino/Arduino.mk
# --- nano ide 1.6
#BOARD_TAG = nano
#BOARD_SUB = atmega328
#ARDUINO_DIR = /where/you/installed/arduino-1.6.5
#include /usr/share/arduino/Arduino.mk
# --- pro mini
#BOARD_TAG = pro5v328
#MONITOR_PORT = /dev/ttyUSB0
#include /usr/share/arduino/Arduino.mk
# --- sparkfun pro micro
#BOARD_TAG = promicro16
#ALTERNATE_CORE = promicro
#BOARDS_TXT = $(HOME)/arduino/hardware/promicro/boards.txt
#BOOTLOADER_PARENT = $(HOME)/arduino/hardware/promicro/bootloaders
#BOOTLOADER_PATH = caterina
#BOOTLOADER_FILE = Caterina-promicro16.hex
#ISP_PROG = usbasp
#AVRDUDE_OPTS = -v
#include /usr/share/arduino/Arduino.mk
# --- chipkit
#BOARD_TAG = mega_pic32
#MPIDE_DIR = /where/you/installed/mpide-0023-linux64-20130817-test
#include /usr/share/arduino/chipKIT.mk
# --- pinoccio
#BOARD_TAG = pinoccio256
#ALTERNATE_CORE = pinoccio
#BOOTLOADER_PARENT = $(HOME)/arduino/hardware/pinoccio/bootloaders
#BOOTLOADER_PATH = STK500RFR2/release_0.51
#BOOTLOADER_FILE = boot_pinoccio.hex
#CFLAGS_STD = -std=gnu99
#CXXFLAGS_STD = -std=gnu++11
#include /usr/share/arduino/Arduino.mk
# --- fio
#BOARD_TAG = fio
#include /usr/share/arduino/Arduino.mk
# --- atmega-ng ide 1.6
#BOARD_TAG = atmegang
#BOARD_SUB = atmega168
#MONITOR_PORT = /dev/ttyACM0
#ARDUINO_DIR = /where/you/installed/arduino-1.6.5
#include /usr/share/arduino/Arduino.mk
# --- arduino-tiny ide 1.0
#ISP_PROG = usbasp
#BOARD_TAG = attiny85at8
#ALTERNATE_CORE = tiny
#ARDUINO_VAR_PATH = $(HOME)/arduino/hardware/tiny/cores/tiny
#ARDUINO_CORE_PATH = $(HOME)/arduino/hardware/tiny/cores/tiny
#AVRDUDE_OPTS = -v
#include /usr/share/arduino/Arduino.mk
# --- arduino-tiny ide 1.6
#ISP_PROG = usbasp
#BOARD_TAG = attiny85at8
#ALTERNATE_CORE = tiny
#ARDUINO_DIR = /where/you/installed/arduino-1.6.5
#include /usr/share/arduino/Arduino.mk
# --- damellis attiny ide 1.0
#ISP_PROG = usbasp
#BOARD_TAG = attiny85
#ALTERNATE_CORE = attiny-master
#AVRDUDE_OPTS = -v
#include /usr/share/arduino/Arduino.mk
# --- damellis attiny ide 1.6
#ISP_PROG = usbasp
#BOARD_TAG = attiny
#BOARD_SUB = attiny85
#ALTERNATE_CORE = attiny
#F_CPU = 16000000L
#ARDUINO_DIR = /where/you/installed/arduino-1.6.5
#include /usr/share/arduino/Arduino.mk
# --- teensy3
#BOARD_TAG = teensy31
#ARDUINO_DIR = /where/you/installed/the/patched/teensy/arduino-1.0.6
#include /usr/share/arduino/Teensy.mk
# --- mighty 1284p
#BOARD_TAG = mighty_opt
#BOARDS_TXT = $(HOME)/arduino/hardware/mighty-1284p/boards.txt
#BOOTLOADER_PARENT = $(HOME)/arduino/hardware/mighty-1284p/bootloaders
#BOOTLOADER_PATH = optiboot
#BOOTLOADER_FILE = optiboot_atmega1284p.hex
#ISP_PROG = usbasp
#AVRDUDE_OPTS = -v
#include /usr/share/arduino/Arduino.mk
# --- atmega328p on breadboard
#BOARD_TAG = atmega328bb
#ISP_PROG = usbasp
#AVRDUDE_OPTS = -v
#BOARDS_TXT = $(HOME)/arduino/hardware/breadboard/boards.txt
#include /usr/share/arduino/Arduino.mk

View File

@@ -0,0 +1,175 @@
/* **************************************** *
* Title *
* **************************************** *
* (C) 201x-xx-xx Paolo Iocco *
* rev. 0.x *
* **************************************** *
* Circuit diagram
* ---------------
* +-------+
* | ooooo |
* D1--TX<----| A |<---------RAW
* D0--RX---->| r |<---------GND
* RST------->| d |<---------RST
* GND------->| u |<---------VCC
* D2-------->| i |-----A3---D17
* D3----#--->| n |-----A2---D16
* D4-------->| o |-----A1---D15
* D5<---#----| |-----A0---D14
* D6<---#----| m |-----SCK--D13
* D7---------| i |-----MISO-D12
* D8---------| n |--#--MOSI-D11
* D9----#----| i |--#--SS---D10
* +-------+
*
* ***************************************** */
/*
* IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
* An IR detector/demodulator must be connected to the input RECV_PIN.
* Version 0.1 July, 2009
* Copyright 2009 Ken Shirriff
* http://arcfn.com
*/
/*
* Testing code for receiving data from the Lego Power Function IR Remote Control http://bit.ly/1Gq18RG
* If you want to deepen the knowledge of Lego Power Functions Modules, http://www.philohome.com/pf/pf.htm
*
* TODO:
* - test if LEGO® Power Functions IR Speed Remote Control uses the same protocol http://bit.ly/1wDQ13l
* - sort out some extra codes received
*
* Davide Gomba, 16/12/2014
*
*
*Available Macros:
*CH1_LEFT_UP
*CH1_LEFT_DOWN
*CH1_RIGHT_UP
*CH1_RIGHT_DOWN
*CH1_BREAK
*
*CH2_LEFT_UP
*CH2_LEFT_DOWN
*CH2_RIGHT_UP
*CH2_RIGHT_DOWN
*CH2_BREAK
*
*CH3_LEFT_UP
*CH3_LEFT_DOWN
*CH3_RIGHT_UP
*CH3_RIGHT_DOWN
*CH3_BREAK
*
*CH4_LEFT_UP
*CH4_LEFT_DOWN
*CH4_RIGHT_UP
*CH4_RIGHT_DOWN
*/
#include <IRremote.h>
#include "codes.h"
const int RECV_LED = 13;
const int RECV_PIN = 2; // Digital IO pin connected to the IR receiver
IRrecv irrecv(RECV_PIN);
long unsigned startTime = millis();
decode_results results;
void setup()
{
pinMode(RECV_LED, OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
void loop() {
if(millis() - startTime > 200)
digitalWrite(RECV_LED, LOW);
else
digitalWrite(RECV_LED, HIGH);
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
if(legoCode(results.value) != -1) //known code
startTime = millis();
// Channel #1
if (legoCode(results.value) == CH1_LEFT_UP)
{
Serial.println(" CH - 1 // LEFT UP");
}
else if (legoCode(results.value) == CH1_LEFT_DOWN)
{
Serial.println(" CH - 1 // LEFT DOWN");
}
else if (legoCode(results.value) == CH1_RIGHT_UP) {
Serial.println(" CH - 1 // RIGHT UP");
}
else if (legoCode(results.value) == CH1_RIGHT_DOWN) {
Serial.println(" CH - 1 // RIGHT DOWN");
}
else if (legoCode(results.value) == CH1_BREAK) {
Serial.println(" CH - 1 // BREAK");
}
// Channel #2
else if (legoCode(results.value) == CH2_LEFT_UP) {
Serial.println(" CH - 2 // LEFT UP");
}
else if (legoCode(results.value) == CH2_LEFT_DOWN) {
Serial.println(" CH - 2 // LEFT DOWN");
}
else if (legoCode(results.value) == CH2_RIGHT_UP){
Serial.println(" CH - 2 // RIGHT UP");
}
else if (legoCode(results.value) == CH2_RIGHT_DOWN){
Serial.println(" CH - 2 // RIGHT DOWN");
}
else if (legoCode(results.value) == CH2_BREAK) {
Serial.println(" CH - 2 // BREAK");
}
// Channel #3
else if (legoCode(results.value) == CH3_LEFT_UP) {
Serial.println(" CH - 3 // LEFT UP");
}
else if (legoCode(results.value) == CH3_LEFT_DOWN) {
Serial.println(" CH - 3 // LEFT DOWN");
}
else if (legoCode(results.value) == CH3_RIGHT_UP) {
Serial.println(" CH - 3 // RIGHT UP");
}
else if (legoCode(results.value) == CH3_RIGHT_DOWN){
Serial.println(" CH - 3 // RIGHT DOWN");
}
else if (legoCode(results.value) == CH3_BREAK) {
Serial.println(" CH - 3 // BREAK");
}
// Channel #4
else if (legoCode(results.value) == CH4_LEFT_UP) {
Serial.println(" CH - 4 // LEFT UP");
}
else if (legoCode(results.value) == CH4_LEFT_DOWN) {
Serial.println(" CH - 4 // LEFT DOWN");
}
else if (legoCode(results.value) == CH4_RIGHT_UP) {
Serial.println(" CH - 4 // RIGHT UP");
}
else if (legoCode(results.value) == CH4_RIGHT_DOWN) {
Serial.println(" CH - 4 // RIGHT DOWN");
}
else if (legoCode(results.value) == CH4_BREAK) {
Serial.println(" CH - 4 // BREAK");
}
irrecv.resume(); // Receive the next value
}
}