© 2024 EasyEDA Some rights reserved ISO/IEC
1.Easy to use and quick to get started
2.The process supports design scales of 300 devices or 1000 pads
3.Supports simple circuit simulation
4.For students, teachers, creators
1.Brand new interactions and interfaces
2.Smooth support for design sizes of over 5,000 devices or 10,000 pads
3.More rigorous design constraints, more standardized processes
4.For enterprises, more professional users
STD 8_march
License: Public Domain
Mode: Editors' pick
Мигалка к 8 марта на atmega328 и светодиодах с nano
/*
1 клик - следующий режим
2 клика - автомсена (по умолчанию включено)
светодиоды по номеру
1
0 2
3
9 4
8 5
7 6
*/
const int ledCount = 10;
int ledPins [] = {6, 5, 4, 3, 10, 11, 12, 9, 8, 7};
byte thisMode;
#define mode_mount 10
#define BTN 2
#define AUTOPLAY_TIME 3 // автоплей в секундах
#include "GyverButton.h"
GButton touch(BTN, HIGH_PULL, NORM_OPEN);
#include "GyverTimer.h"
//GTimer_ms effectTimer(500);
GTimer_ms autoplayTimer((long)AUTOPLAY_TIME * 1000);
boolean autoplay = true;
void setup() {
Serial.begin (9600);
touch.setTimeout(300);
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
pinMode (ledPins[thisLed], OUTPUT);
}
}
void loop() {
touch.tick();
switch (thisMode) {// переключение режимов
case 0: allOn();
break;
case 1: allOff();
break;
case 2: halfL();
break;
case 3: halfR();
break;
case 4: pixel();
break;
case 5: bar();
break;
case 6: pixelBig();
break;
case 7: strokeOnlyHorTop ();
break;
case 8: blinkLR();
break;
case 9: strokeFilHorTop();
break;
}
if (touch.hasClicks()) {// обработка кликов
byte clicks = touch.getClicks();
switch (clicks) {
case 1:
{
if (thisMode == 3) {
thisMode = 0;
}
else {
nextMode();
}
}
break;
case 2: autoplay = !autoplay; break;
}
}
if (autoplayTimer.isReady() && autoplay) { // таймер смены режима
nextMode();
}
}
void nextMode() {
thisMode++;
if (thisMode >= mode_mount) thisMode = 0;
}
void blinkLR() {
halfR ();
delay (200);
halfL ();
delay (200);
}
void halfL() {
for (int thisLed = 2; thisLed <= 6; thisLed++) {
digitalWrite (ledPins[thisLed], LOW);
}
digitalWrite (ledPins[0], HIGH);
digitalWrite (ledPins[1], HIGH);
digitalWrite (ledPins[3], HIGH);
digitalWrite (ledPins[9], HIGH);
digitalWrite (ledPins[8], HIGH);
digitalWrite (ledPins[7], HIGH);
}
void halfR() {
for (int thisLed = 1; thisLed <= 6; thisLed++) {
digitalWrite (ledPins[thisLed], HIGH);
}
digitalWrite (ledPins[0], LOW);
digitalWrite (ledPins[3], LOW);
digitalWrite (ledPins[9], LOW);
digitalWrite (ledPins[8], LOW);
digitalWrite (ledPins[7], LOW);
}
void pixel() {
allOff ();
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
digitalWrite (ledPins[thisLed], HIGH);
delay (200);
digitalWrite (ledPins[thisLed], LOW);
}
digitalWrite (ledPins[3], HIGH);
delay (200);
digitalWrite (ledPins[3], LOW);
}
void bar() {
allOff ();
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
digitalWrite (ledPins[thisLed], HIGH);
delay (100);
}
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
digitalWrite (ledPins[thisLed], LOW);
}
delay (400);
}
void pixelBig() {
for (int q = 0; q <= ledCount; q++) {
digitalWrite (ledPins[q], HIGH);
delay (100);
digitalWrite (ledPins[q + 1], HIGH);
digitalWrite (ledPins[q - 1], LOW);
}
digitalWrite (ledPins[3], HIGH);
delay (100);
digitalWrite (ledPins[3], LOW);
}
void strokeOnlyHorTop() {
allOff ();
digitalWrite (ledPins[6], HIGH);
digitalWrite (ledPins[7], HIGH);
delay (200);
digitalWrite (ledPins[6], LOW);
digitalWrite (ledPins[7], LOW);
digitalWrite (ledPins[5], HIGH);
digitalWrite (ledPins[8], HIGH);
delay (200);
digitalWrite (ledPins[5], LOW);
digitalWrite (ledPins[8], LOW);
digitalWrite (ledPins[4], HIGH);
digitalWrite (ledPins[9], HIGH);
delay (200);
digitalWrite (ledPins[4], LOW);
digitalWrite (ledPins[9], LOW);
digitalWrite (ledPins[3], HIGH);
delay (200);
digitalWrite (ledPins[3], LOW);
digitalWrite (ledPins[2], HIGH);
digitalWrite (ledPins[0], HIGH);
delay (200);
digitalWrite (ledPins[2], LOW);
digitalWrite (ledPins[0], LOW);
digitalWrite (ledPins[1], HIGH);
delay (200);
digitalWrite (ledPins[1], LOW);
}
void strokeFilHorTop() {
allOff ();
delay (200);
digitalWrite (ledPins[6], HIGH);
digitalWrite (ledPins[7], HIGH);
delay (200);
digitalWrite (ledPins[5], HIGH);
digitalWrite (ledPins[8], HIGH);
delay (200);
digitalWrite (ledPins[4], HIGH);
digitalWrite (ledPins[9], HIGH);
delay (200);
digitalWrite (ledPins[3], HIGH);
delay (200);
digitalWrite (ledPins[2], HIGH);
digitalWrite (ledPins[0], HIGH);
delay (200);
digitalWrite (ledPins[1], HIGH);
delay (200);
}
void allOn() {
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
digitalWrite (ledPins[thisLed], HIGH);
}
}
void allOff() {
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
digitalWrite (ledPins[thisLed], LOW);
}
}
ID | Name | Designator | Footprint | Quantity |
---|---|---|---|---|
1 | programming | H1 | HDR-F-2.54_1X3 | 1 |
2 | K2-3.6×6.1_SMD | KEY1 | KEY-SMD_2P-L6.2-W3.6-LS8.0 | 1 |
3 | LED-0603_R | LED1,LED2,LED3,LED4,LED5,LED6,LED7,LED8,LED9,LED10 | LED0603_RED | 10 |
4 | 1k | R1,R2,R3,R4,R5,R6,R7,R8,R9,R10 | R0805 | 10 |
5 | 10k | R11 | R0805 | 1 |
6 | ATMEGA328-AU | U1 | TQFP-32_L7.0-W7.0-P0.80-LS9.0-BL | 1 |
7 | micro 5P_C77238 | USB1 | MICRO-USB_MICRO-USB-17 | 1 |
8 | Керамический резонатор SMD | Y1 | X3-SMD-3.6X1.3X0.8MM | 1 |
Unfold
Loading...
Do you need to add this project to the album?