dioda rgb wyzwalana matrycą przycisków 4x4

Moderator: frogmaker

pi
Moderator
Moderator
Posty: 18
Rejestracja: 09 sty 2018, 9:44

dioda rgb wyzwalana matrycą przycisków 4x4

Post autor: pi »

// 4x4 Keypad Matrix tutroial
// Robo India | www.roboindia.com

#include <Adafruit_NeoPixel.h> //Dołączenie biblioteki

//Konfiguracja linijki
Adafruit_NeoPixel linijka = Adafruit_NeoPixel( 8, A0, NEO_GRB + NEO_KHZ800);


byte h=0,v=0; // variables used in for loops
const int period=50; // A little delay to avoid errors.
int kdelay=0; // Non Blocking Delay
const byte rows=4; // Rows in Keypad
const byte columns=4; // Columns in Keypad
const byte Output[rows]={6,7,8,9}; //Row connceted to Arduino Pins
const byte Input[columns]={2,3,4,5}; //Columns connected to Arduino Pins
void setup()
{
for(byte i=0;i<rows;i++) //Loop to declare output pins.
{
pinMode(Output,OUTPUT);
}
for(byte s=0;s<columns;s++) // Loop to decalre Input pins, Initial Pulledup.
{
pinMode(Input[s],INPUT_PULLUP);
}
Serial.begin(9600); // Initializing Serail communication.

linijka.begin(); //Inicjalizacja
linijka.show();


}


void loop()
{
if(millis()-kdelay>period) //used to make non-blocking delay
{
kdelay=millis(); //capture time from millis function
switch (keypad()) //Switch to get which button is pressed.
{
case 0:
Serial.println(1);
break;
case 1:
Serial.println(2);
break;
case 2:
Serial.println(3);
linijka.setPixelColor(0, linijka.Color(255, 0, 255)); //Dioda nr 1 świeci na zielono
linijka.show();
break;
case 3:
Serial.println("A");
linijka.setPixelColor(0, linijka.Color(0, 255, 0)); //Dioda nr 1 świeci na zielono
linijka.show();
break;
case 4:
Serial.println(4);
break;
case 5:
Serial.println(5);
break;
case 6:
Serial.println(6);
linijka.setPixelColor(0, linijka.Color(0, 255, 255)); //Dioda nr 1 świeci na zielono
linijka.show();
break;
case 7:
Serial.println("B");
linijka.setPixelColor(0, linijka.Color(255, 0, 0)); //Dioda nr 1 świeci na zielono
linijka.show();
break;
case 8:
Serial.println(7);
break;
case 9:
Serial.println(8);
break;
case 10:
Serial.println(9);
linijka.setPixelColor(0, linijka.Color(255, 255, 0)); //Dioda nr 1 świeci na zielono
linijka.show();
break;
case 11:
Serial.println("C");
linijka.setPixelColor(0, linijka.Color(0, 0, 255)); //Dioda nr 1 świeci na zielono
linijka.show();
break;
case 12:
Serial.println("*");
linijka.setPixelColor(0, linijka.Color(0, 0, 0)); //Dioda nr 1 nie świeci
linijka.show();
break;
case 13:
Serial.println(0);
break;
case 14:
Serial.println("#");
break;
case 15:
Serial.println("D");
linijka.setPixelColor(0, linijka.Color(255, 255, 255)); //Dioda nr 1 świeci na biało
linijka.show();
break;
default:
;
}
}
}

// Below function is used to detect which button is pressed.

byte keypad()
{
static bool no_press_flag=0;
for(byte x=0;x<columns;x++)
{
if (digitalRead(Input[x])==HIGH);
else
break;
if(x==(columns-1))
{
no_press_flag=1;
h=0;
v=0;
}
}
if(no_press_flag==1)
{
for(byte r=0;r<rows;r++)
digitalWrite(Output[r],LOW);
for(h=0;h<columns;h++)
{
if(digitalRead(Input[h])==HIGH)
continue;
else
{
for (v=0;v<rows;v++)
{
digitalWrite(Output[v],HIGH);
if(digitalRead(Input[h])==HIGH)
{
no_press_flag=0;
for(byte w=0;w<rows;w++)
digitalWrite(Output[w],LOW);
return v*4+h;
}
}
}
}
}
return 50;
}
ODPOWIEDZ