mirror of
https://github.com/Theaninova/Arduino-IRremote.git
synced 2026-01-09 09:22:48 +00:00
Compare commits
14 Commits
feature-ch
...
176c000cdf
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
176c000cdf | ||
|
|
09d9e3a28d | ||
|
|
a963e85e8c | ||
|
|
df0c2db187 | ||
|
|
2dc97b29f2 | ||
|
|
a6b9cc277b | ||
|
|
96186317b2 | ||
|
|
5a2ded839c | ||
|
|
46b7a72da0 | ||
|
|
06d06019a6 | ||
|
|
57ee7a670e | ||
|
|
20bc39a68f | ||
|
|
c2d25b4dd9 | ||
|
|
7734a90db3 |
12
IRremote.h
12
IRremote.h
@@ -79,6 +79,9 @@
|
|||||||
#define DECODE_LEGO_PF 0 // NOT WRITTEN
|
#define DECODE_LEGO_PF 0 // NOT WRITTEN
|
||||||
#define SEND_LEGO_PF 1
|
#define SEND_LEGO_PF 1
|
||||||
|
|
||||||
|
#define DECODE_NERF_LOP 0 // NOT WRITTEN
|
||||||
|
#define SEND_NERF_LOP 1
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// When sending a Pronto code we request to send either the "once" code
|
// When sending a Pronto code we request to send either the "once" code
|
||||||
// or the "repeat" code
|
// or the "repeat" code
|
||||||
@@ -119,6 +122,7 @@ typedef
|
|||||||
DENON,
|
DENON,
|
||||||
PRONTO,
|
PRONTO,
|
||||||
LEGO_PF,
|
LEGO_PF,
|
||||||
|
NERF_LOP,
|
||||||
}
|
}
|
||||||
decode_type_t;
|
decode_type_t;
|
||||||
|
|
||||||
@@ -251,6 +255,10 @@ class IRrecv
|
|||||||
# if DECODE_LEGO_PF
|
# if DECODE_LEGO_PF
|
||||||
bool decodeLegoPowerFunctions (decode_results *results) ;
|
bool decodeLegoPowerFunctions (decode_results *results) ;
|
||||||
# endif
|
# endif
|
||||||
|
//......................................................................
|
||||||
|
# if DECODE_NERF_LOP
|
||||||
|
bool decodeNerfLOP (decode_results *results) ;
|
||||||
|
# endif
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
@@ -339,6 +347,10 @@ class IRsend
|
|||||||
# if SEND_LEGO_PF
|
# if SEND_LEGO_PF
|
||||||
void sendLegoPowerFunctions (uint16_t data, bool repeat = true) ;
|
void sendLegoPowerFunctions (uint16_t data, bool repeat = true) ;
|
||||||
# endif
|
# endif
|
||||||
|
//......................................................................
|
||||||
|
# if SEND_NERF_LOP
|
||||||
|
void sendNerfLOP (uint16_t data, bool repeat = true) ;
|
||||||
|
# endif
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ Whether you use the Adafruit Neopixel lib, or FastLED, interrupts get disabled o
|
|||||||
- ATtiny 84 / 85
|
- ATtiny 84 / 85
|
||||||
- ESP32 (receive only)
|
- ESP32 (receive only)
|
||||||
- ESP8266 is supported in a fork based on an old codebase that isn't as recent, but it works reasonably well given that perfectly timed sub millisecond interrupts are different on that chip. See https://github.com/markszabo/IRremoteESP8266
|
- ESP8266 is supported in a fork based on an old codebase that isn't as recent, but it works reasonably well given that perfectly timed sub millisecond interrupts are different on that chip. See https://github.com/markszabo/IRremoteESP8266
|
||||||
|
- Sparkfun Pro Micro
|
||||||
|
|
||||||
We are open to suggestions for adding support to new boards, however we highly recommend you contact your supplier first and ask them to provide support from their side.
|
We are open to suggestions for adding support to new boards, however we highly recommend you contact your supplier first and ask them to provide support from their side.
|
||||||
|
|
||||||
@@ -51,6 +52,7 @@ We are open to suggestions for adding support to new boards, however we highly r
|
|||||||
| [ATmega64, ATmega128](https://github.com/MCUdude/MegaCore) | **13** | **1** |
|
| [ATmega64, ATmega128](https://github.com/MCUdude/MegaCore) | **13** | **1** |
|
||||||
| ATmega1280, ATmega2560 | 5, 6, **9**, 11, 46 | 1, **2**, 3, 4, 5 |
|
| ATmega1280, ATmega2560 | 5, 6, **9**, 11, 46 | 1, **2**, 3, 4, 5 |
|
||||||
| [ESP32](http://esp32.net/) | N/A (not supported) | **1** |
|
| [ESP32](http://esp32.net/) | N/A (not supported) | **1** |
|
||||||
|
| [Sparkfun Pro Micro](https://www.sparkfun.com/products/12640) | 9, **5**, 5 | 1, **3**, 4_HS |
|
||||||
| [Teensy 1.0](https://www.pjrc.com/teensy/) | **17** | **1** |
|
| [Teensy 1.0](https://www.pjrc.com/teensy/) | **17** | **1** |
|
||||||
| [Teensy 2.0](https://www.pjrc.com/teensy/) | 9, **10**, 14 | 1, 3, **4_HS** |
|
| [Teensy 2.0](https://www.pjrc.com/teensy/) | 9, **10**, 14 | 1, 3, **4_HS** |
|
||||||
| [Teensy++ 1.0 / 2.0](https://www.pjrc.com/teensy/) | **1**, 16, 25 | 1, **2**, 3 |
|
| [Teensy++ 1.0 / 2.0](https://www.pjrc.com/teensy/) | **1**, 16, 25 | 1, **2**, 3 |
|
||||||
|
|||||||
38
boarddefs.h
38
boarddefs.h
@@ -15,6 +15,8 @@
|
|||||||
//
|
//
|
||||||
// JVC and Panasonic protocol added by Kristian Lauszus (Thanks to zenwheel and other people at the original blog post)
|
// JVC and Panasonic protocol added by Kristian Lauszus (Thanks to zenwheel and other people at the original blog post)
|
||||||
// Whynter A/C ARC-110WD added by Francesco Meschia
|
// Whynter A/C ARC-110WD added by Francesco Meschia
|
||||||
|
|
||||||
|
// Sparkfun Pro Micro support by Alastair McCormack
|
||||||
//******************************************************************************
|
//******************************************************************************
|
||||||
|
|
||||||
#ifndef boarddefs_h
|
#ifndef boarddefs_h
|
||||||
@@ -70,8 +72,14 @@
|
|||||||
// switch IRremote to use a different timer.
|
// switch IRremote to use a different timer.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
// Sparkfun Pro Micro
|
||||||
|
#if defined(ARDUINO_AVR_PROMICRO)
|
||||||
|
//#define IR_USE_TIMER1 // tx = pin 9
|
||||||
|
#define IR_USE_TIMER3 // tx = pin 5
|
||||||
|
//#define IR_USE_TIMER4_HS // tx = pin 5
|
||||||
|
|
||||||
// Arduino Mega
|
// Arduino Mega
|
||||||
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
|
#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
|
||||||
//#define IR_USE_TIMER1 // tx = pin 11
|
//#define IR_USE_TIMER1 // tx = pin 11
|
||||||
#define IR_USE_TIMER2 // tx = pin 9
|
#define IR_USE_TIMER2 // tx = pin 9
|
||||||
//#define IR_USE_TIMER3 // tx = pin 5
|
//#define IR_USE_TIMER3 // tx = pin 5
|
||||||
@@ -246,19 +254,18 @@
|
|||||||
# define TIMER_PWM_PIN CORE_OC1A_PIN // Teensy
|
# define TIMER_PWM_PIN CORE_OC1A_PIN // Teensy
|
||||||
#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
|
#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
|
||||||
# define TIMER_PWM_PIN 11 // Arduino Mega
|
# define TIMER_PWM_PIN 11 // Arduino Mega
|
||||||
#elif defined(__AVR_ATmega64__) || defined(__AVR_ATmega128__)
|
|
||||||
# define TIMER_PWM_PIN 13 // MegaCore
|
|
||||||
#elif defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) \
|
#elif defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) \
|
||||||
|| defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) \
|
|| defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) \
|
||||||
|| defined(__AVR_ATmega324P__) || defined(__AVR_ATmega324A__) \
|
|| defined(__AVR_ATmega324P__) || defined(__AVR_ATmega324A__) \
|
||||||
|| defined(__AVR_ATmega324PA__) || defined(__AVR_ATmega164A__) \
|
|| defined(__AVR_ATmega324PA__) || defined(__AVR_ATmega164A__) \
|
||||||
|| defined(__AVR_ATmega164P__) || defined(__AVR_ATmega32__) \
|
|| defined(__AVR_ATmega164P__) || defined(__AVR_ATmega32__) \
|
||||||
|| defined(__AVR_ATmega16__) || defined(__AVR_ATmega8535__)
|
|| defined(__AVR_ATmega16__) || defined(__AVR_ATmega8535__) \
|
||||||
# define TIMER_PWM_PIN 13 // MightyCore
|
|| defined(__AVR_ATmega64__) || defined(__AVR_ATmega128__)
|
||||||
|
# define TIMER_PWM_PIN 13 // MightyCore, MegaCore
|
||||||
#elif defined(__AVR_ATtiny84__)
|
#elif defined(__AVR_ATtiny84__)
|
||||||
# define TIMER_PWM_PIN 6
|
# define TIMER_PWM_PIN 6
|
||||||
#else
|
#else
|
||||||
# define TIMER_PWM_PIN 9 // Arduino Duemilanove, Diecimila, LilyPad, etc
|
# define TIMER_PWM_PIN 9 // Arduino Duemilanove, Diecimila, LilyPad, Sparkfun Pro Micro etc
|
||||||
#endif // ATmega48, ATmega88, ATmega168, ATmega328
|
#endif // ATmega48, ATmega88, ATmega168, ATmega328
|
||||||
|
|
||||||
//---------------------------------------------------------
|
//---------------------------------------------------------
|
||||||
@@ -291,8 +298,8 @@
|
|||||||
//-----------------
|
//-----------------
|
||||||
#if defined(CORE_OC3A_PIN)
|
#if defined(CORE_OC3A_PIN)
|
||||||
# define TIMER_PWM_PIN CORE_OC3A_PIN // Teensy
|
# define TIMER_PWM_PIN CORE_OC3A_PIN // Teensy
|
||||||
#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
|
#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(ARDUINO_AVR_PROMICRO)
|
||||||
# define TIMER_PWM_PIN 5 // Arduino Mega
|
# define TIMER_PWM_PIN 5 // Arduino Mega, Sparkfun Pro Micro
|
||||||
#elif defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)
|
#elif defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)
|
||||||
# define TIMER_PWM_PIN 6 // MightyCore
|
# define TIMER_PWM_PIN 6 // MightyCore
|
||||||
#else
|
#else
|
||||||
@@ -305,12 +312,21 @@
|
|||||||
#elif defined(IR_USE_TIMER4_HS)
|
#elif defined(IR_USE_TIMER4_HS)
|
||||||
|
|
||||||
#define TIMER_RESET
|
#define TIMER_RESET
|
||||||
#define TIMER_ENABLE_PWM (TCCR4A |= _BV(COM4A1))
|
|
||||||
#define TIMER_DISABLE_PWM (TCCR4A &= ~(_BV(COM4A1)))
|
#if defined(ARDUINO_AVR_PROMICRO) // Sparkfun Pro Micro
|
||||||
|
#define TIMER_ENABLE_PWM (TCCR4A |= _BV(COM4A0)) // Use complimentary O̅C̅4̅A̅ output on pin 5
|
||||||
|
#define TIMER_DISABLE_PWM (TCCR4A &= ~(_BV(COM4A0))) // (Pro Micro does not map PC7 (32/ICP3/CLK0/OC4A)
|
||||||
|
// of ATmega32U4 )
|
||||||
|
#else
|
||||||
|
#define TIMER_ENABLE_PWM (TCCR4A |= _BV(COM4A1))
|
||||||
|
#define TIMER_DISABLE_PWM (TCCR4A &= ~(_BV(COM4A1)))
|
||||||
|
#endif
|
||||||
|
|
||||||
#define TIMER_ENABLE_INTR (TIMSK4 = _BV(TOIE4))
|
#define TIMER_ENABLE_INTR (TIMSK4 = _BV(TOIE4))
|
||||||
#define TIMER_DISABLE_INTR (TIMSK4 = 0)
|
#define TIMER_DISABLE_INTR (TIMSK4 = 0)
|
||||||
#define TIMER_INTR_NAME TIMER4_OVF_vect
|
#define TIMER_INTR_NAME TIMER4_OVF_vect
|
||||||
|
|
||||||
|
|
||||||
#define TIMER_CONFIG_KHZ(val) ({ \
|
#define TIMER_CONFIG_KHZ(val) ({ \
|
||||||
const uint16_t pwmval = SYSCLOCK / 2000 / (val); \
|
const uint16_t pwmval = SYSCLOCK / 2000 / (val); \
|
||||||
TCCR4A = (1<<PWM4A); \
|
TCCR4A = (1<<PWM4A); \
|
||||||
@@ -339,6 +355,8 @@
|
|||||||
//-----------------
|
//-----------------
|
||||||
#if defined(CORE_OC4A_PIN)
|
#if defined(CORE_OC4A_PIN)
|
||||||
# define TIMER_PWM_PIN CORE_OC4A_PIN // Teensy
|
# define TIMER_PWM_PIN CORE_OC4A_PIN // Teensy
|
||||||
|
#elif defined(ARDUINO_AVR_PROMICRO)
|
||||||
|
# define TIMER_PWM_PIN 5 // Sparkfun Pro Micro
|
||||||
#elif defined(__AVR_ATmega32U4__)
|
#elif defined(__AVR_ATmega32U4__)
|
||||||
# define TIMER_PWM_PIN 13 // Leonardo
|
# define TIMER_PWM_PIN 13 // Leonardo
|
||||||
#else
|
#else
|
||||||
|
|||||||
39
irRecv.cpp
39
irRecv.cpp
@@ -1,10 +1,10 @@
|
|||||||
#include "IRremote.h"
|
#include "IRremote.h"
|
||||||
#include "IRremoteInt.h"
|
#include "IRremoteInt.h"
|
||||||
|
|
||||||
#ifdef IR_TIMER_USE_ESP32
|
#ifdef IR_TIMER_USE_ESP32
|
||||||
hw_timer_t *timer;
|
hw_timer_t *timer;
|
||||||
void IRTimer(); // defined in IRremote.cpp
|
void IRTimer(); // defined in IRremote.cpp
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//+=============================================================================
|
//+=============================================================================
|
||||||
// Decodes the received IR message
|
// Decodes the received IR message
|
||||||
@@ -89,6 +89,11 @@ int IRrecv::decode (decode_results *results)
|
|||||||
DBG_PRINTLN("Attempting Lego Power Functions");
|
DBG_PRINTLN("Attempting Lego Power Functions");
|
||||||
if (decodeLegoPowerFunctions(results)) return true ;
|
if (decodeLegoPowerFunctions(results)) return true ;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if DECODE_NERF_LOP
|
||||||
|
DBG_PRINTLN("Attempting Nerf Laser Ops Pro Functions");
|
||||||
|
if (decodeNerfLOP(results)) return true ;
|
||||||
|
#endif
|
||||||
|
|
||||||
// decodeHash returns a hash on any input.
|
// decodeHash returns a hash on any input.
|
||||||
// Thus, it needs to be last in the list.
|
// Thus, it needs to be last in the list.
|
||||||
@@ -122,17 +127,17 @@ IRrecv::IRrecv (int recvpin, int blinkpin)
|
|||||||
//
|
//
|
||||||
void IRrecv::enableIRIn ( )
|
void IRrecv::enableIRIn ( )
|
||||||
{
|
{
|
||||||
// Interrupt Service Routine - Fires every 50uS
|
// Interrupt Service Routine - Fires every 50uS
|
||||||
#ifdef ESP32
|
#ifdef ESP32
|
||||||
// ESP32 has a proper API to setup timers, no weird chip macros needed
|
// ESP32 has a proper API to setup timers, no weird chip macros needed
|
||||||
// simply call the readable API versions :)
|
// simply call the readable API versions :)
|
||||||
// 3 timers, choose #1, 80 divider nanosecond precision, 1 to count up
|
// 3 timers, choose #1, 80 divider nanosecond precision, 1 to count up
|
||||||
timer = timerBegin(1, 80, 1);
|
timer = timerBegin(1, 80, 1);
|
||||||
timerAttachInterrupt(timer, &IRTimer, 1);
|
timerAttachInterrupt(timer, &IRTimer, 1);
|
||||||
// every 50ns, autoreload = true
|
// every 50ns, autoreload = true
|
||||||
timerAlarmWrite(timer, 50, true);
|
timerAlarmWrite(timer, 50, true);
|
||||||
timerAlarmEnable(timer);
|
timerAlarmEnable(timer);
|
||||||
#else
|
#else
|
||||||
cli();
|
cli();
|
||||||
// Setup pulse clock timer interrupt
|
// Setup pulse clock timer interrupt
|
||||||
// Prescale /8 (16M/8 = 0.5 microseconds per tick)
|
// Prescale /8 (16M/8 = 0.5 microseconds per tick)
|
||||||
@@ -146,7 +151,7 @@ void IRrecv::enableIRIn ( )
|
|||||||
TIMER_RESET;
|
TIMER_RESET;
|
||||||
|
|
||||||
sei(); // enable interrupts
|
sei(); // enable interrupts
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Initialize state machine variables
|
// Initialize state machine variables
|
||||||
irparams.rcvstate = STATE_IDLE;
|
irparams.rcvstate = STATE_IDLE;
|
||||||
|
|||||||
89
ir_NerfLaserOpsPro.cpp
Normal file
89
ir_NerfLaserOpsPro.cpp
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
#include "IRremote.h"
|
||||||
|
#include "IRremoteInt.h"
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// NERF LASER OPS PRO
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//==============================================================================
|
||||||
|
|
||||||
|
#define BITS 15 // The number of bits in the command
|
||||||
|
|
||||||
|
#define HDR_MARK 2800 // The length of the Header:Mark
|
||||||
|
#define HDR_SPACE 6000 // The lenght of the Header:Space
|
||||||
|
|
||||||
|
#define ONE_MARK 1800 // The length of a Bit:Mark for 1's
|
||||||
|
#define ZERO_MARK 800 // The length of a Bit:Mark for 0's
|
||||||
|
#define ALL_SPACE 2100 // The length of a Bit:Space
|
||||||
|
|
||||||
|
#define purpule 0x440
|
||||||
|
#define red 0x400
|
||||||
|
#define blue 0x420
|
||||||
|
|
||||||
|
//+=============================================================================
|
||||||
|
//
|
||||||
|
#if SEND_NERF_LOP
|
||||||
|
void IRsend::sendNerfLOP (unsigned long data, int nbits)
|
||||||
|
{
|
||||||
|
// Set IR carrier frequency
|
||||||
|
enableIROut(40);
|
||||||
|
|
||||||
|
// Header
|
||||||
|
mark (HDR_MARK);
|
||||||
|
space(HDR_SPACE);
|
||||||
|
mark (HDR_MARK);
|
||||||
|
|
||||||
|
// Data
|
||||||
|
for (unsigned long mask = 1UL << (nbits - 1); mask; mask >>= 1) {
|
||||||
|
if (data & mask) {
|
||||||
|
space(ALL_SPACE);
|
||||||
|
mark (ONE_MARK);
|
||||||
|
} else {
|
||||||
|
space(ALL_SPACE);
|
||||||
|
mark (ZERO_MARK);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
space(0); // Always end with the LED off
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//+=============================================================================
|
||||||
|
//
|
||||||
|
#if DECODE_NERF_LOP
|
||||||
|
bool IRrecv::decodeNerfLOP (decode_results *results)
|
||||||
|
{
|
||||||
|
//NOT IMPLEMENTED YET
|
||||||
|
return false;
|
||||||
|
unsigned long data = 0; // Somewhere to build our code
|
||||||
|
int offset = 1; // Skip the Gap reading
|
||||||
|
|
||||||
|
// Check we have the right amount of data
|
||||||
|
if (irparams.rawlen != 1 + 2 + (2 * BITS) + 1) return false ;
|
||||||
|
|
||||||
|
// Check initial Mark+Space match
|
||||||
|
if (!MATCH_MARK (results->rawbuf[offset++], HDR_MARK )) return false ;
|
||||||
|
if (!MATCH_SPACE(results->rawbuf[offset++], HDR_SPACE)) return false ;
|
||||||
|
|
||||||
|
// Read the bits in
|
||||||
|
for (int i = 0; i < SHUZU_BITS; i++) {
|
||||||
|
// Each bit looks like: MARK + SPACE_1 -> 1
|
||||||
|
// or : MARK + SPACE_0 -> 0
|
||||||
|
if (!MATCH_MARK(results->rawbuf[offset++], BIT_MARK)) return false ;
|
||||||
|
|
||||||
|
// IR data is big-endian, so we shuffle it in from the right:
|
||||||
|
if (MATCH_SPACE(results->rawbuf[offset], ONE_SPACE)) data = (data << 1) | 1 ;
|
||||||
|
else if (MATCH_SPACE(results->rawbuf[offset], ZERO_SPACE)) data = (data << 1) | 0 ;
|
||||||
|
else return false ;
|
||||||
|
offset++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Success
|
||||||
|
results->bits = BITS;
|
||||||
|
results->value = data;
|
||||||
|
results->decode_type = SHUZU;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
97
readmdFrench.md
Normal file
97
readmdFrench.md
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
## IRremote Library
|
||||||
|
|
||||||
|
|
||||||
|
Cette bibliothèque vous permet d'envoyer et de recevoir des signaux infrarouges sur un Arduino.
|
||||||
|
Des tutoriels et plus d'informations seront disponibles sur la page d'accueil officielle.
|
||||||
|
|
||||||
|
## Version - 2.2.3
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
1. Allez à la [Releases](https://github.com/z3t0/Arduino-IRremote/releases) page.
|
||||||
|
2. Téléchargez la dernière version.
|
||||||
|
3. Extraire le fichier zip
|
||||||
|
4. Déplacez le dossier "IRremote" vers vos bibliothèques.
|
||||||
|
5. Assurez-vous de supprimer Arduino_Root / libraries / RobotIRremote. Où Arduino_Root fait référence au répertoire d'installation d'Arduino. La bibliothèque RobotIRremote a des définitions similaires à IRremote et provoque des erreurs.
|
||||||
|
|
||||||
|
|
||||||
|
## FAQ
|
||||||
|
Je ne travaille pas correctement en utilisant Neopixels (aka WS2811 / WS2812 / WS2812B)
|
||||||
|
Que vous utilisiez la librairie Adafruit Neopixel ou FastLED, les interruptions sont désactivées sur de nombreux processeurs bas de gamme comme les arduinos de base. À son tour, cela empêche le gestionnaire IR de s'exécuter quand il le faut. Il y a quelques solutions à ce processus, voir cette page de Marc MERLIN
|
||||||
|
[cette page de Marc MERLIN](http://marc.merlins.org/perso/arduino/post_2017-04-03_Arduino-328P-Uno-Teensy3_1-ESP8266-ESP32-IR-and-Neopixels.html)
|
||||||
|
|
||||||
|
|
||||||
|
## Conseils pris en charge
|
||||||
|
|
||||||
|
- Teensy 1.0 / 1.0++ / 2.0 / 2++ / 3.0 / 3.1 / Teensy-LC; Crédits: @PaulStoffregen (Teensy Team)
|
||||||
|
- Sanguino
|
||||||
|
- ATmega8, 48, 88, 168, 328
|
||||||
|
- ATmega8535, 16, 32, 164, 324, 644, 1284,
|
||||||
|
- ATmega64, 128
|
||||||
|
- ATtiny 84 / 85
|
||||||
|
- ESP32 (recevoir seulement)
|
||||||
|
- ESP8266 est basé sur un ancien code qui n'est pas très récent, mais cela fonctionne raisonnablement bien. Voir https://github.com/markszabo/IRremoteESP8266
|
||||||
|
Sparkfun Pro Micro
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Nous sommes ouverts aux suggestions d'ajout de support pour les nouveaux tableaux, cependant, nous vous recommandons fortement de contacter votre fournisseur et de fournir un soutien de leur côté.
|
||||||
|
|
||||||
|
|
||||||
|
## Spécifications matérielles
|
||||||
|
|
||||||
|
|
||||||
|
| Carte/CPU | Envoyer Pin | Compteurs |
|
||||||
|
|--------------------------------------------------------------------------|---------------------|-------------------|
|
||||||
|
| [ATtiny84](https://github.com/SpenceKonde/ATTinyCore) | **6** | **1** |
|
||||||
|
| [ATtiny85](https://github.com/SpenceKonde/ATTinyCore) | **1** | **TINY0** |
|
||||||
|
| [ATmega8](https://github.com/MCUdude/MiniCore) | **9** | **1** |
|
||||||
|
| Atmega32u4 | 5, 9, **13** | 1, 3, **4** |
|
||||||
|
| [ATmega48, ATmega88, ATmega168, ATmega328](https://github.com/MCUdude/MiniCore) | **3**, 9 | 1, **2** |
|
||||||
|
| [ATmega1284](https://github.com/MCUdude/MightyCore) | 13, 14, 6 | 1, **2**, 3 |
|
||||||
|
| [ATmega164, ATmega324, ATmega644](https://github.com/MCUdude/MightyCore) | 13, **14** | 1, **2** |
|
||||||
|
| [ATmega8535 ATmega16, ATmega32](https://github.com/MCUdude/MightyCore) | **13** | **1** |
|
||||||
|
| [ATmega64, ATmega128](https://github.com/MCUdude/MegaCore) | **13** | **1** |
|
||||||
|
| ATmega1280, ATmega2560 | 5, 6, **9**, 11, 46 | 1, **2**, 3, 4, 5 |
|
||||||
|
| [ESP32](http://esp32.net/) | N/A (insupporté) | **1** |
|
||||||
|
| [Sparkfun Pro Micro](https://www.sparkfun.com/products/12640) | 9, **5**, 5 | 1, **3**, 4_HS |
|
||||||
|
| [Teensy 1.0](https://www.pjrc.com/teensy/) | **17** | **1** |
|
||||||
|
| [Teensy 2.0](https://www.pjrc.com/teensy/) | 9, **10**, 14 | 1, 3, **4_HS** |
|
||||||
|
| [Teensy++ 1.0 / 2.0](https://www.pjrc.com/teensy/) | **1**, 16, 25 | 1, **2**, 3 |
|
||||||
|
| [Teensy 3.0 / 3.1](https://www.pjrc.com/teensy/) | **5** | **CMT** |
|
||||||
|
| [Teensy-LC](https://www.pjrc.com/teensy/) | **16** | **TPM1** |
|
||||||
|
|
||||||
|
|
||||||
|
## Patchs expérimentaux
|
||||||
|
|
||||||
|
Voici les correctifs strictement pris en charge qui n'ont pas encore été intégrés. Si vous avez des questions, n'hésitez pas à demander ici. Si cela fonctionne, faites le nous savoir!
|
||||||
|
|
||||||
|
[Arduino 101](https://github.com/z3t0/Arduino-IRremote/pull/481#issuecomment-311243146)
|
||||||
|
|
||||||
|
Le tableau ci-dessus répertorie les temporisations actuellement supportées et les broches d'envoi correspondantes, beaucoup de ces broches supplémentaires sont ouvertes.
|
||||||
|
|
||||||
|
|
||||||
|
## Utilisation
|
||||||
|
- À faire TODO (Vérifier les exemples pour l'instant)
|
||||||
|
|
||||||
|
|
||||||
|
## Contribution
|
||||||
|
Si vous voulez contribuer à ce projet:
|
||||||
|
- Signaler les bogues et les erreurs
|
||||||
|
- Demander des améliorations
|
||||||
|
- Créer des problèmes et tirer des requêtes
|
||||||
|
- Parlez de cette bibliothèque à d'autres personnes
|
||||||
|
- Contribuer de nouveaux protocoles
|
||||||
|
Vérifiez ici [ici](Contributing.md) pour quelques guidelines
|
||||||
|
|
||||||
|
|
||||||
|
## Contact
|
||||||
|
Email: zetoslab@gmail.com
|
||||||
|
Please only email me if it is more appropriate than creating an Issue / PR. I **will** not respond to requests for adding support for particular boards, unless of course you are the creator of the board and would like to cooperate on the project. I will also **ignore** any emails asking me to tell you how to implement your ideas. However, if you have a private inquiry that you would only apply to you and you would prefer it to be via email, by all means.
|
||||||
|
|
||||||
|
## Contributeurs
|
||||||
|
Check [here](Contributors.md)
|
||||||
|
@Lsuperman735 French translation
|
||||||
|
|
||||||
|
## Copyright
|
||||||
|
Copyright 2009-2012 Ken Shirriff
|
||||||
Reference in New Issue
Block a user