Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Program
- #include <LiquidCrystal.h> //Dołączenie bilbioteki
- LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //Informacja o podłączeniu nowego wyświetlacza
- #define BTN_PIN A0
- #define BTN1 1023
- #define BTN2 911
- #define BTN3 797
- #define BTN4 683
- #define BTN5 572
- #define BTN6 461
- #define BTN7 333
- #define BTN8 222
- int latchPin = 8;
- //Pin connected to SH_CP of 74HC595
- int clockPin = 12;
- ////Pin connected to DS of 74HC595
- int dataPin = 11;
- //holder for infromation you're going to pass to shifting function
- byte data = 0;
- bool isAnalogBtnPressed(int analogVal, int btnValue) {
- return abs(btnValue - analogVal) <= 20;
- }
- int odczytanaWartosc = 0;
- void setup() {
- pinMode(BTN_PIN, INPUT);
- Serial.begin(9600);
- pinMode(latchPin, OUTPUT);
- pinMode(clockPin, OUTPUT);
- pinMode(dataPin, OUTPUT);
- lcd.begin(16, 2); //Deklaracja typu
- }
- void loop() {
- int btnData = analogRead(BTN_PIN);
- if(isAnalogBtnPressed(btnData, BTN1)) {
- Serial.println("Wcisnieto przycisk 1");
- lcd.setCursor(0, 0); //Ustawienie kursora
- lcd.print("Wcisnieto 1"); //Wyświetlenie tekstu
- lightShiftPinA(0);
- delay(1000);
- } else if(isAnalogBtnPressed(btnData, BTN2)) {
- Serial.println("Wcisnieto przycisk 2");
- lcd.setCursor(0, 0); //Ustawienie kursora
- lcd.print("Wcisnieto 2"); //Wyświetlenie tekstu
- lightShiftPinA(1);
- delay(1000);
- } else if(isAnalogBtnPressed(btnData, BTN3)) {
- Serial.println("Wcisnieto przycisk 3");
- lcd.setCursor(0, 0); //Ustawienie kursora
- lcd.print("Wcisnieto 3"); //Wyświetlenie tekstu
- lightShiftPinA(2);
- delay(1000);
- } else if(isAnalogBtnPressed(btnData, BTN4)) {
- Serial.println("Wcisnieto przycisk 4");
- lcd.setCursor(0, 0); //Ustawienie kursora
- lcd.print("Wcisnieto 4"); //Wyświetlenie tekstu
- lightShiftPinA(3);
- delay(1000);
- }
- else if(isAnalogBtnPressed(btnData, BTN5)) {
- Serial.println("Wcisnieto przycisk 5");
- lcd.setCursor(0, 0); //Ustawienie kursora
- lcd.print("Wcisnieto 5"); //Wyświetlenie tekstu
- lightShiftPinA(4);
- delay(1000);
- } else if(isAnalogBtnPressed(btnData, BTN6)) {
- Serial.println("Wcisnieto przycisk 6");
- lcd.setCursor(0, 0); //Ustawienie kursora
- lcd.print("Wcisnieto 6"); //Wyświetlenie tekstu
- lightShiftPinA(5);
- delay(1000);
- } else if(isAnalogBtnPressed(btnData, BTN7)) {
- Serial.println("Wcisnieto przycisk 7");
- lcd.setCursor(0, 0); //Ustawienie kursora
- lcd.print("Wcisnieto 7"); //Wyświetlenie tekstu
- lightShiftPinA(6);
- delay(1000);
- }
- else if(isAnalogBtnPressed(btnData, BTN8)) {
- Serial.println("Wcisnieto przycisk 8");
- lcd.setCursor(0, 0); //Ustawienie kursora
- lcd.print("Wcisnieto 8"); //Wyświetlenie tekstu
- lightShiftPinA(7);
- delay(1000);
- }
- delay(100);
- }
- //This function uses bitwise math to move the pins up
- void lightShiftPinA(int p) {
- //defines a local variable
- int pin;
- //this is line uses a bitwise operator
- //shifting a bit left using << is the same
- //as multiplying the decimal number by two.
- pin = 1<< p;
- //ground latchPin and hold low for as long as you are transmitting
- digitalWrite(latchPin, LOW);
- //move 'em out
- shiftOut(dataPin, clockPin, MSBFIRST, pin);
- //return the latch pin high to signal chip that it
- //no longer needs to listen for information
- digitalWrite(latchPin, HIGH);
- }
- //This function uses that fact that each bit in a byte
- //is 2 times greater than the one before it to
- //shift the bits higher
- void lightShiftPinB(int p) {
- //defines a local variable
- int pin;
- //start with the pin = 1 so that if 0 is passed to this
- //function pin 0 will light.
- pin = 1;
- for (int x = 0; x < p; x++) {
- pin = pin * 2;
- }
- //ground latchPin and hold low for as long as you are transmitting
- digitalWrite(latchPin, LOW);
- //move 'em out
- shiftOut(dataPin, clockPin, MSBFIRST, pin);
- //return the latch pin high to signal chip that it
- //no longer needs to listen for information
- digitalWrite(latchPin, HIGH);
- }
- //blinks the whole register based on the number of times you want to
- //blink "n" and the pause between them "d"
- //starts with a moment of darkness to make sure the first blink
- //has its full visual effect.
- void blinkAll(int n, int d) {
- digitalWrite(latchPin, LOW);
- shiftOut(dataPin, clockPin, MSBFIRST, 0);
- digitalWrite(latchPin, HIGH);
- delay(200);
- for (int x = 0; x < n; x++) {
- digitalWrite(latchPin, LOW);
- shiftOut(dataPin, clockPin, MSBFIRST, 255);
- digitalWrite(latchPin, HIGH);
- delay(d);
- digitalWrite(latchPin, LOW);
- shiftOut(dataPin, clockPin, MSBFIRST, 0);
- digitalWrite(latchPin, HIGH);
- delay(d);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement