daily_automated
This commit is contained in:
@@ -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
|
||||
99
trunk/Arduino/sketch_pro_IR_Power_Functions_Receiver/codes.h
Normal file
99
trunk/Arduino/sketch_pro_IR_Power_Functions_Receiver/codes.h
Normal 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;
|
||||
}
|
||||
132
trunk/Arduino/sketch_pro_IR_Power_Functions_Receiver/makefile
Normal file
132
trunk/Arduino/sketch_pro_IR_Power_Functions_Receiver/makefile
Normal 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
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user