I am very new to Arduino and need a bit of help. I am working on a project to increase and decrease numbers on a single 7 segment display with an IR remote. One button should turn the 7-segment on, one button should increase the displayed number and one button should decrease the displayed number. An LED strip should also light up with the same number of LEDs as the number displayed on the seven segment.
I realize this code probably is not the most direct way to achieve what I am trying to do, but I am wondering if there is a way to make this work and appreciate all help.
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
#include <IRremote.h>
#define IR_RECEIVER_PIN 8
IRrecv irreceive(IR_RECEIVER_PIN);
decode_results results;
int i=0;
#define PIXEL_PIN1 5
#define PIXEL_COUNT 6
Adafruit_NeoPixel strip1(PIXEL_COUNT, PIXEL_PIN1, NEO_GRB + NEO_KHZ800);
#define BUTTON_1 0xFD08F7
#define BUTTON_2 0xFD8877
#define BUTTON_3 0xFD48B7
void setup()
{
irreceive.enableIRIn();
strip1.begin();
strip1.show();
pinMode(0, OUTPUT); // D0
pinMode(1, OUTPUT); // D1
pinMode(2, OUTPUT); // D2
pinMode(3, OUTPUT); // D3
}
void loop()
{
while (0<=i<=3){
if(irreceive.decode(&results)) {
Serial.println(results.value, HEX);
irreceive.resume();
}
if(results.value == 0xFD08F7)//allow loop to begin by pressing button 1
{
s(i);
if(results.value == 0xFD8877)//increase number by pressing button 2
{
i++;
}
if(results.value == 0XFD48B7)//decrease number by pressing button 3
{
i--;
}
}
}
}
void s(int inputNum){
if(inputNum=0)
{
//0 leds on, 7-segment number 0
strip1.clear();
strip1.show();
digitalWrite(0, LOW); // 1
digitalWrite(1, LOW); // 2
digitalWrite(2, LOW); // 4
digitalWrite(3, LOW); // 8
delay(1000);
}
else if(inputNum=1)
{
//1 led on, 7-segment number 1
strip1.clear();
strip1.show();
uint32_t red = strip1.Color(250, 0, 0, 0);
strip1.fill(red, 0, 1);
strip1.show();
digitalWrite(0, HIGH); // 1
digitalWrite(1, LOW); // 2
digitalWrite(2, LOW); // 4
digitalWrite(3, LOW); // 8
delay(1000);
}
else if(inputNum=2)
{
//2 leds on, 7-segment number 2
strip1.clear();
strip1.show();
uint32_t red = strip1.Color(250, 0, 0, 0);
strip1.fill(red, 0, 2);
strip1.show();
digitalWrite(0, LOW); // 1
digitalWrite(1, HIGH); // 2
digitalWrite(2, LOW); // 4
digitalWrite(3, LOW); // 8
delay(1000);
}
else if(inputNum=3)
{
//3 leds on, 7-segment number 3
strip1.clear();
strip1.show();
uint32_t red = strip1.Color(250, 0, 0, 0);
strip1.fill(red, 0, 3);
strip1.show();
digitalWrite(0, HIGH); // 1
digitalWrite(1, HIGH); // 2
digitalWrite(2, LOW); // 4
digitalWrite(3, LOW); // 8
delay(1000);
}
else
{
off();
}
}
void off()
{
uint32_t white = strip1.Color(0, 0, 0, 0);
strip1.fill(white, 0, 8);
strip1.show();
digitalWrite(0, HIGH); // 1
digitalWrite(1, HIGH); // 2
digitalWrite(2, HIGH); // 4
digitalWrite(3, HIGH); // 8
delay(1000);
}