Reworked IR code so it's 32 bits.
Added comments. Added start/stop bit logic.
This commit is contained in:
35
src/main.cpp
35
src/main.cpp
@@ -1,11 +1,14 @@
|
|||||||
#include <avr/io.h>
|
#include <avr/io.h>
|
||||||
#include <avr/interrupt.h>
|
#include <avr/interrupt.h>
|
||||||
#include <avr/delay.h>
|
#include <util/delay.h>
|
||||||
|
|
||||||
// unsigned long CODE = 0b10011111111100100100100100100100100100111111001110010010010010011; //65 bits
|
//32 bit code
|
||||||
int code = 111111111000000001111112111000011 ;
|
int code = 0b11111111100000000111111011100001;
|
||||||
|
|
||||||
|
//length of each bit
|
||||||
#define BIT_LENGTH 10
|
#define BIT_LENGTH 10
|
||||||
|
|
||||||
|
//Generates the carrier requency for the supplied timeframe
|
||||||
void carrier(int BlastTime) {
|
void carrier(int BlastTime) {
|
||||||
for(int i=0; i<(BlastTime / 2); i++)
|
for(int i=0; i<(BlastTime / 2); i++)
|
||||||
{
|
{
|
||||||
@@ -17,20 +20,31 @@ void carrier(int BlastTime) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// send '1' bit
|
||||||
int sendShort(void){
|
int sendShort(void){
|
||||||
carrier(BIT_LENGTH);
|
carrier(BIT_LENGTH);
|
||||||
_delay_ms(BIT_LENGTH);
|
_delay_ms(BIT_LENGTH);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// send '0/ bit
|
||||||
int sendLong(void){
|
int sendLong(void){
|
||||||
|
_delay_ms(BIT_LENGTH);
|
||||||
carrier(BIT_LENGTH);
|
carrier(BIT_LENGTH);
|
||||||
_delay_ms(BIT_LENGTH*3);
|
_delay_ms(BIT_LENGTH);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Send the entire code including init, start, and end bits
|
||||||
void sendBlast(void) {
|
void sendBlast(void) {
|
||||||
carrier(20);
|
carrier(20);
|
||||||
_delay_ms(20);
|
_delay_ms(20);
|
||||||
|
|
||||||
|
//start bit
|
||||||
|
sendShort();
|
||||||
|
_delay_ms(BIT_LENGTH);
|
||||||
|
|
||||||
|
//Start 32 bit Code
|
||||||
for (int i=0; i<9;i++){
|
for (int i=0; i<9;i++){
|
||||||
sendShort();
|
sendShort();
|
||||||
}
|
}
|
||||||
@@ -40,7 +54,6 @@ void sendBlast(void) {
|
|||||||
for (int i=0;i<6;i++){
|
for (int i=0;i<6;i++){
|
||||||
sendShort();
|
sendShort();
|
||||||
}
|
}
|
||||||
_delay_ms(BIT_LENGTH);
|
|
||||||
for (int i=0;i<3;i++){
|
for (int i=0;i<3;i++){
|
||||||
sendShort();
|
sendShort();
|
||||||
}
|
}
|
||||||
@@ -50,8 +63,8 @@ void sendBlast(void) {
|
|||||||
for(int i=0;i<2;i++){
|
for(int i=0;i<2;i++){
|
||||||
sendShort();
|
sendShort();
|
||||||
}
|
}
|
||||||
|
//stop bit
|
||||||
|
sendShort();
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(void) {
|
int main(void) {
|
||||||
@@ -62,14 +75,12 @@ int main(void) {
|
|||||||
|
|
||||||
while(true)
|
while(true)
|
||||||
{
|
{
|
||||||
if ((PINB & (1 << 0x01)) == 0)
|
if ((PINB & (1 << 0x01)) == 0){ //if the button is pushed start sending code
|
||||||
{
|
|
||||||
sendBlast();
|
sendBlast();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
PORTB &= ~(1 << 0x04);
|
PORTB &= ~(1 << 0x04); //if the button is not pushed make sure PB4 is off
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user