Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- 9FEB2019
- Sketch uses 2312 bytes (7%) of program storage space. Maximum is 32256 bytes.
- Global variables use 38 bytes (1%) of dynamic memory, leaving 2010 bytes for local variables. Maximum is 2048 bytes.
- */
- //Pressing nothing Displays value of analog revolving potentiometer 0-1024
- //pressing key1 Shows 0123 on LED Segment Displays
- //pressing key2 Buzzer ringing
- //pressing key3 The four on-board LEDs light in sequence
- //Defining three pins of 74HC595 for the LED Numerical Display
- int latchPin = 4;//ST_CP
- int clockPin = 7;//SH_CP
- int dataPin = 8; //DS
- //Defining three buttons for input
- int key1 = A1;
- int key2 = A2;
- int key3 = A3;
- //Defining the buzzer pin
- int buzzer = 3;
- //Defining the potentiometer input for A/D conversion
- int pot = A0;
- //Pin definition for the LEDs
- int led1 = 13;
- int led2 = 12;
- int led3 = 11;
- int led4 = 10;
- int dat_wei[4] = {0x01, 0x02, 0x04, 0x08}; //LED Segment Displays showing 1--4
- int dat_duan[10] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}; //LED Segment Displays showing 0--9
- char i = 0;
- // Run once at the beginning or after a [Reset]
- void setup ()
- {
- pinMode(latchPin, OUTPUT);
- pinMode(clockPin, OUTPUT);
- pinMode(dataPin, OUTPUT);
- pinMode(key1, INPUT);
- pinMode(key2, INPUT);
- pinMode(key3, INPUT);
- pinMode(buzzer, OUTPUT);
- digitalWrite(buzzer, HIGH); // Sound Off;
- pinMode(led1, OUTPUT);
- pinMode(led2, OUTPUT);
- pinMode(led3, OUTPUT);
- pinMode(led4, OUTPUT);
- // pinMode(led5, OUTPUT);
- // pinMode(led6, OUTPUT);
- for (char i = 8; i < 14; i++)
- digitalWrite(i, HIGH);
- }
- // Main Program Loop (Runs continuously)
- void loop()
- {
- if (digitalRead(key1) == LOW )
- SMG(); //testing LED Segment Displays
- if (digitalRead(key2) == LOW )
- buzzer_(); //testing buzzer
- if (digitalRead(key3) == LOW)
- led_display(); //testing LED
- if (digitalRead(key1) == HIGH & digitalRead(key2) == HIGH & digitalRead(key3) == HIGH)
- analog(); //testing analog input
- }
- // Using the 7 Segment X 4 Digit LEDs Display
- void SMG(void)
- {
- digitalWrite(latchPin, LOW); //clear LED Segment Displays
- shiftOut(dataPin, clockPin, MSBFIRST , 0x00);
- shiftOut(dataPin, clockPin, MSBFIRST , 0x00);
- digitalWrite(latchPin, HIGH);
- while (1)
- {
- digitalWrite(latchPin, LOW);
- //MSBFIRST,transmitting binary bit from high to low,74HC595 starts from first piece, and displaces data from Q0 to Q7. If there is data, it will start from the second piece like this.
- shiftOut(dataPin, clockPin, MSBFIRST , dat_duan[i]); //data about second piece
- shiftOut(dataPin, clockPin, MSBFIRST , dat_wei[i]); //way of MSBFIRST,data about first piece
- digitalWrite(latchPin, HIGH);
- i++;
- if (i == 4) {
- i = 0;
- }
- if (digitalRead(key1) == HIGH)
- {
- digitalWrite(latchPin, LOW); //clear LED Segment Displays
- shiftOut(dataPin, clockPin, MSBFIRST , 0x00);
- shiftOut(dataPin, clockPin, MSBFIRST , 0x00);
- digitalWrite(latchPin, HIGH);
- break;
- }
- }
- }
- // Using the Buzzer
- void buzzer_(void)
- {
- char i;
- digitalWrite(latchPin, LOW); //clear LED Segment Displays
- shiftOut(dataPin, clockPin, MSBFIRST , 0x00);
- shiftOut(dataPin, clockPin, MSBFIRST , 0x00);
- digitalWrite(latchPin, HIGH);
- while (1)
- {
- for (i = 0; i < 80; i++) // output a frequency sound
- {
- digitalWrite(buzzer, LOW); // sound
- delay(1);//delay1ms
- digitalWrite(buzzer, HIGH ); //not sound
- delay(1);//ms delay
- }
- for (i = 0; i < 100; i++) // output a frequency sound
- {
- digitalWrite(buzzer, LOW); // sound
- digitalWrite(buzzer, HIGH); //not sound
- delay(2);//2ms delay
- }
- if (digitalRead(key2) == HIGH)
- {
- digitalWrite(latchPin, LOW); //clear LED Segment Displays
- shiftOut(dataPin, clockPin, MSBFIRST , 0x00);
- shiftOut(dataPin, clockPin, MSBFIRST , 0x00);
- digitalWrite(latchPin, HIGH);
- break;
- }
- }
- }
- // Using the 4 LEDs in sequence
- void led_display()
- {
- digitalWrite(latchPin, LOW); //clear LED Segment Displays
- shiftOut(dataPin, clockPin, MSBFIRST , 0x00);
- shiftOut(dataPin, clockPin, MSBFIRST , 0x00);
- digitalWrite(latchPin, HIGH);
- while (1)
- {
- digitalWrite(led1, LOW);
- delay(100);
- digitalWrite(led1, HIGH);
- digitalWrite(led2, LOW);
- delay(100);
- digitalWrite(led2, HIGH);
- digitalWrite(led3, LOW);
- delay(100);
- digitalWrite(led3, HIGH);
- digitalWrite(led4, LOW);
- delay(100);
- digitalWrite(led4, HIGH);
- // digitalWrite(led5, LOW);
- delay(100);
- // digitalWrite(led5, HIGH);
- // digitalWrite(led6, LOW);
- delay(100);
- // digitalWrite(led6, HIGH);
- if (digitalRead(key3) == HIGH)
- {
- break;
- }
- }
- }
- // Read the potentiometer voltage value
- void analog()
- {
- int val, qian, bai, shi, ge;
- val = analogRead(pot);
- qian = val / 1000;
- bai = val % 1000;
- bai = bai / 100;
- shi = val % 100;
- shi = shi / 10;
- ge = val % 10;
- digitalWrite(latchPin, LOW);
- shiftOut(dataPin, clockPin, MSBFIRST , dat_duan[qian]);
- shiftOut(dataPin, clockPin, MSBFIRST , 0x01);
- digitalWrite(latchPin, HIGH);
- digitalWrite(latchPin, LOW);
- shiftOut(dataPin, clockPin, MSBFIRST , dat_duan[bai]);
- shiftOut(dataPin, clockPin, MSBFIRST , 0x02);
- digitalWrite(latchPin, HIGH);
- digitalWrite(latchPin, LOW);
- shiftOut(dataPin, clockPin, MSBFIRST , dat_duan[shi]);
- shiftOut(dataPin, clockPin, MSBFIRST , 0x04);
- digitalWrite(latchPin, HIGH);
- digitalWrite(latchPin, LOW);
- shiftOut(dataPin, clockPin, MSBFIRST , dat_duan[ge]);
- shiftOut(dataPin, clockPin, MSBFIRST , 0x08);
- digitalWrite(latchPin, HIGH);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement