Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*********************************************************************
- gnd vcc clk mosi rst dc
- *********************************************************************/
- #include "pitches.h"
- #include <SPI.h>
- #include <Wire.h>
- #include <Adafruit_GFX.h>
- #include <Adafruit_SSD1306.h>
- #define SSD1306_128_64
- #define OLED_MOSI 5
- #define OLED_CLK 4
- #define OLED_DC 7
- #define OLED_CS 12
- #define OLED_RESET 6
- Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
- long settime = 240;
- long disptime;
- long end_time;
- long disptimeM;
- long disptimeS;
- boolean start = false;
- unsigned long currentTime;
- unsigned long loopTime;
- const int pin_A = 8;
- const int pin_B = 9;
- unsigned char encoder_A;
- unsigned char encoder_B;
- unsigned char encoder_A_prev = 0;
- int fadeAmount = 10;
- int noteDurations[] = {
- 4, 8, 8, 4, 4, 4, 4, 4
- };
- int melody[] = {
- NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4
- };
- void knopka()
- {
- static unsigned long millis_prev;
- if (millis() - 300 > millis_prev)
- start = !start; // меняем значение на противоположное
- millis_prev = millis();
- }
- void setup() {
- pinMode (4, INPUT);
- display.begin(32);
- display.clearDisplay();
- pinMode (11, OUTPUT);
- digitalWrite(11, HIGH);
- attachInterrupt(0, knopka, RISING);
- pinMode(pin_A, INPUT);
- pinMode(pin_B, INPUT);
- currentTime = millis();
- loopTime = currentTime;
- display.clearDisplay();
- display.setTextSize(1);
- display.setTextColor(WHITE);
- display.setCursor(0, 0);
- display.println("VNIMANIE!");
- display.setTextSize(1);
- display.setTextColor(WHITE);
- display.setCursor(0, 8);
- display.println("Ultrafiolet vredit ");
- display.setTextSize(1);
- display.setTextColor(WHITE);
- display.setCursor(0, 16);
- display.println("glazam i kozhe.");
- display.setTextSize(1);
- display.setTextColor(WHITE);
- display.setCursor(0, 24);
- display.println("Ispolzovat razumno.");
- display.display();
- for (int thisNote = 0; thisNote < 8; thisNote++) {
- int noteDuration = 1000 / noteDurations[thisNote];
- tone(10, melody[thisNote], noteDuration);
- int pauseBetweenNotes = noteDuration * 1.30;
- delay(pauseBetweenNotes);
- noTone(10);
- }
- delay(3000);
- }
- void schet ()
- {
- tone(10, 1000, 250);
- disptime = settime;
- end_time = millis() + (disptime * 1000);
- while (disptime > 0 ) {
- disptime = (end_time - millis()) / 1000;
- disptimeM = disptime / 60;
- disptimeS = disptime - (disptimeM * 60);
- display.clearDisplay();
- display.setTextSize(1);
- display.setTextColor(WHITE);
- display.setCursor(0, 0);
- display.println("OCTATOK:");
- display.setTextSize(3);
- display.setTextColor(WHITE);
- display.setCursor(25, 8);
- if (disptimeM > 0)
- {
- display.println(disptimeM);
- display.setTextSize(2);
- display.setCursor(44, 15);
- display.println("M");
- }
- if (disptimeS < 10)
- {
- display.setTextSize(3);
- display.setCursor(65, 8);
- display.println("0");
- display.setCursor(83, 8);
- display.println(disptimeS);
- }
- else
- {
- display.setTextSize(3);
- display.setCursor(65, 8);
- display.println(disptimeS);
- }
- display.setTextSize(2);
- display.setCursor(103, 15);
- display.println("C");
- display.display();
- if (start == false)
- {
- digitalWrite(11, HIGH);
- tone(10, 500, 250);
- tone(10, 0, 250);
- tone(10, 500, 250);
- break;
- }
- }
- digitalWrite(11, HIGH);
- tone(10, 500, 200);
- delay(400);
- tone(10, 500, 300);
- start = false;
- }
- void loop() {
- currentTime = millis();
- if (currentTime >= (loopTime + 1)) {
- encoder_A = digitalRead(pin_A);
- encoder_B = digitalRead(pin_B);
- if ((!encoder_A) && (encoder_A_prev)) {
- if (encoder_B) {
- if (settime + fadeAmount <= 599) settime += fadeAmount;
- }
- else {
- if (settime - fadeAmount >= 0) settime -= fadeAmount;
- }
- }
- encoder_A_prev = encoder_A;
- loopTime = currentTime;
- }
- if (start == true)
- {
- digitalWrite(11, LOW);
- schet();
- }
- display.clearDisplay();
- disptime = settime;
- disptimeM = disptime / 60;
- disptimeS = disptime - (disptimeM * 60);
- display.setTextSize(1);
- display.setTextColor(WHITE);
- display.setCursor(0, 0);
- display.println("HACTPOuKA:");
- // display.drawPixel(39, 0, WHITE);
- //display.drawPixel(37, 0, WHITE);
- display.drawPixel(38, 0, WHITE);
- display.setTextSize(3);
- display.setTextColor(WHITE);
- display.setCursor(25, 8);
- if (disptimeM > 0)
- {
- display.println(disptimeM);
- display.setTextSize(2);
- display.setCursor(44, 15);
- display.println("M");
- }
- if (disptimeS < 10)
- {
- display.setTextSize(3);
- display.setCursor(65, 8);
- display.println("0");
- display.setCursor(83, 8);
- display.println(disptimeS);
- }
- else
- {
- display.setTextSize(3);
- display.setCursor(65, 8);
- display.println(disptimeS);
- }
- display.setTextSize(2);
- display.setCursor(103, 15);
- display.println("C");
- display.display();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement