Работы, выполненные с использованием "Arduino"

На главную

Содержание:

1. Работа с кнопкой: управление состоянием светодиода
2. Работа с кнопкой: triger
3. Сирена
4. Работа с монитором последовательного порта
5. Работа с кнопкой: монитор последовательного порта
6. Работа с аналоговым портом: потенциометр
7. Секундомер
8. Работа с аналоговым портом: вывод звука
9. Термометр
10. Монитор порта: управление состоянием светодиода
11. Жк-экран: поздравление
12. Жк-экран: имя
13. Фототир
14. «Бегущий» символ


1

Название Работа с кнопкой: управление состоянием светодиода
Описание При нажатии кнопки светодиод загорается; при отпускании кнопки светодиод гаснет
Схемы
Текст void setup()
{pinMode(13, OUTPUT);
pinMode(2, INPUT);
delay(1000);}
void loop()
{if (digitalRead(2)==HIGH) {digitalWrite(13, HIGH);} else {digitalWrite(13, LOW);}}
К оглавлению
_________ ____________________________________________________________________________________________________________________________________________________________

2

Название Работа с кнопкой: triger
Описание При нажатии на кнопку светодиод и динамик включаются, при последующих нажатиях изменяют состояние на противоположное
Схемы
Текст bool triger=0;
void onof()
{if (triger==1){digitalWrite(13, HIGH); digitalWrite(5, HIGH); } else {digitalWrite(13, LOW); digitalWrite(5, LOW);}}
void setup()
{pinMode(5, OUTPUT);
pinMode(13, OUTPUT);
pinMode(2, INPUT);
delay(1000);}
void loop()
{if (digitalRead(2)==HIGH) { triger=!triger; onof(); delay(200); }}
К оглавлению
_________ ____________________________________________________________________________________________________________________________________________________________

3

Название Сирена
Описание При нажатии на кнопку начинает работать сирена (каждые 0,1 с динамик меняет свое состояние на противоположное (вкл/выкл))
Схемы
Текст bool st_tm=0;
long st_vr=0;
int tm_p=100;
bool ton=0;
void timer1()
{ if(millis()- st_vr >=tm_p){ st_vr=millis(); ton=!ton; {digitalWrite(13,ton); digitalWrite(5, ton); }} }
void led_of()
{ digitalWrite(13, 0);
digitalWrite(5, 0); }
void setup()
{ pinMode(5, OUTPUT);
pinMode(13, OUTPUT);
pinMode(2, INPUT);
Serial.begin(9600); }
void loop()
{ if (digitalRead(2)==HIGH) {st_tm=!st_tm; led_of() ; delay(200); }
if ( st_tm==1){timer1();} }
К оглавлению
_________ ____________________________________________________________________________________________________________________________________________________________

4

Название Работа с монитором последовательного порта
Описание Через каждые 1000мс определяется текущее время по функции millis() и выводится в монитор последовательного порта; синхронно зажигается светодиод
Схемы
Текст long vremy;
int s=0;
void setup()
{ pinMode(13, OUTPUT);
Serial.begin(9600); }
void loop()
{ s=s+1;
vremy=millis();
Serial.print("N=");
Serial.print(s);
Serial.print(" Tek vr=");
Serial.print(vremy);
Serial.println(" milisek!");
digitalWrite(13,1);delay(500);digitalWrite(13,0);delay(500); }
К оглавлению
_________ ____________________________________________________________________________________________________________________________________________________________

5

Название Работа с кнопкой: монитор последовательного порта
Описание при однократном нажатии на кнопку определяется текущее время по функции millis()и выводится ее значение в монитор последовательного порта
Схемы
Текст long vremy;
void setup()
{ pinMode(2, INPUT);
Serial.begin(9600); }
void loop()
{ if (digitalRead(2)==HIGH) { vremy=millis(); Serial.print("Tek vr="); Serial.print(vremy); Serial.println(" milisek!"); delay(200);} }
К оглавлению
_________ ____________________________________________________________________________________________________________________________________________________________

6

Название Работа с аналоговым портом: потенциометр
Описание Аналоговый порт связан с потенциометром, значение аналогового порта выводится в монитор последовательного порта; при значении аналогового порта 700 включаются светодиод и динамик
Схемы
Текст void setup()
{ pinMode(5, OUTPUT);
pinMode(13, OUTPUT);
pinMode(2, INPUT);
Serial.begin(9600); }
void loop()
{ int port=analogRead(A0);
if(port==700){digitalWrite(13,HIGH); digitalWrite(5,HIGH); } else {digitalWrite(13,LOW); digitalWrite(5,LOW);}
Serial.print("A0=");
Serial.println(port);
delay(100); }
К оглавлению
_________ ____________________________________________________________________________________________________________________________________________________________

7

Название Секундомер
Описание Отсчет времени (чч:мм:сс) работы микроконторллера; каждую секунду загорается светодиод
Схемы
Текст bool mig=0;
int trst=0;
long vrst=0;
int sk0=0;
int sk1=0;
int mn0=0;
int mn1=4;
int ch0=3;
int ch1=2;
int chsum=0;
void clock()
{ if (trst==0){trst=1; vrst=millis();}
if(millis()-vrst>=1000) {vrst=millis(); sk0=sk0+1; mig=!mig; digitalWrite(13,mig);
if (sk0>9){sk1=sk1+1; sk0=0;}
if(sk1>5){mn0=mn0+1; sk1=0;}
if (mn0>9){mn1=mn1+1;mn0=0;}
if (mn1>5){ch0=ch0+1; mn1=0; chsum=ch1*10+ch0; }
if (ch0>9){ch1=ch1+1;ch0=0;}
if (chsum>23){sk0=0;sk1=0;mn0=0; mn1=0; ch0=0; ch1=0; chsum=0;}
String vremy=String(ch1)+String(ch0)+":"+String(mn1)+String(mn0)+"."+String(sk1)+String(sk0);
Serial.print("Tek vremy=");
Serial.println(vremy); } }
void setup()
{ pinMode(13, OUTPUT);
Serial.begin(9600);
Serial.println("Serial Chasy S! "); }
void loop()
{ clock() ;
delay(10); }
К оглавлению
_________ ____________________________________________________________________________________________________________________________________________________________

8

Название Работа с аналоговым портом: вывод звука
Описание Вывод звука с частотой, равной масштабированному значению аналогового порта, через динамик
Схемы
Текст void zvuk(int s)
{ tone(5, s);
//noTone(5); }
void setup()
{ pinMode(5, OUTPUT);
pinMode(13, OUTPUT);
pinMode(2, INPUT);
Serial.begin(9600); }
void loop()
{ int port=analogRead(A0);
int s= map(port, 0, 1023, 20, 5200);
tone(5, s);
Serial.print("A0=");
Serial.print(port);
Serial.print(" ton=");
Serial.print(s);
Serial.println(" Hg");
delay(100); }
К оглавлению
_________ ____________________________________________________________________________________________________________________________________________________________

9

Название Термометр
Описание Измерение температуры термистором и вывод ее значения на жк-экран
Схемы
Текст #include
#include
LiquidCrystal_I2C lcd(0x3f,16,2);
//LiquidCrystal_I2C lcd(0x27,16,2);
//#define TERMIST_B 4300
#define TERMIST_B 3500
//#define VIN 5.0
#define VIN 4.85
String data="";
//String t3="";
float voltage=0;
void termo()
{ voltage=analogRead(A0)*VIN / 1024.0;
voltage=voltage / (VIN-voltage);
voltage=(1./(1./(TERMIST_B)*log(voltage)+1./(25.+273.))-273);
char tmp[10];
dtostrf(voltage,1,2,tmp);
data=" T2="+String(tmp);
delay(1); }
void setup()
{ lcd.init();
lcd.backlight();
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print(" KOLPINKURS.RU ");
lcd.setCursor(0, 1);
lcd.print(" TEMPERATUTE ");
delay(1000);
Serial.begin(9600); } void loop()
{ termo();
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(2, 1);
lcd.print(data);
Serial.println(data);
delay(1000); }
К оглавлению
_________ ____________________________________________________________________________________________________________________________________________________________

10

Название Монитор порта: управление состоянием светодиода
Описание Управление состоянием светодиода с помощью монитора порта (1=вкл, 2=выкл)
Схемы
Текст byte buf=0;
String stroka="";
int h=0;
void opros_kl()
{ if(Serial.available()){ buf=1; stroka=""; delay(5);}
while(0 < Serial.available()) { char c=Serial.read(); stroka=stroka+char(c); }
h=stroka.toInt(); }
void setup()
{ Serial.begin(9600);
pinMode(13, OUTPUT);
Serial.println("Upravlyem Svetodiodom 1- on 2- off"); }
void loop()
{ opros_kl();
if (buf==1){buf=0; Serial.println(h); if ( h==1) { digitalWrite(13,1);} if ( h==2) { digitalWrite(13,0);} }
delay(10); }
К оглавлению
_________ ____________________________________________________________________________________________________________________________________________________________

11

Название Жк-экран: поздравление
Описание Вывод на жк-экран поздравления с Новым Годом
Схемы
Текст #include
#include
//LiquidCrystal_I2C lcd(0x3f,16,2);
LiquidCrystal_I2C lcd(0x27,16,2);
byte newChar1[8]=
{ 0b00011,
0b00101,
0b01001,
0b01001,
0b01001,
0b10001,
0b10001,
0b00000 };
byte newChar2[8]=
{ 0b01111,
0b10001,
0b10001,
0b01111,
0b00101,
0b01001,
0b10001,
0b00000 };
byte newChar3[8]=
{ 0b11111,
0b10000,
0b10000,
0b10000,
0b10000,
0b10000,
0b10000,
0b00000 };
byte newChar4[8] =
{ 0b10001,
0b10011,
0b10011,
0b10101,
0b11001,
0b11001,
0b10001,
0b00000 };
byte newChar5[8] =
{ 0b00100,
0b01010,
0b01010,
0b01010,
0b01010,
0b11111,
0b10001,
0b00000 };
byte newChar6[8] =
{ 0b10001,
0b10001,
0b01001,
0b00110,
0b00010,
0b00100,
0b01000,
0b00000 };
byte newChar7[8] =
{ 0b01110,
0b10101,
0b10101,
0b01110,
0b00100,
0b00100,
0b00100,
0b00000 };
byte newChar8[8]=
{ 0b11111,
0b10001,
0b10001,
0b10001,
0b10001,
0b10001,
0b10001,
0b00000 };
void setup()
{ lcd.init();
lcd.backlight();
lcd.begin(16, 2);
lcd.createChar(0, newChar1);
lcd.createChar(1, newChar2);
lcd.createChar(2, newChar3);
lcd.createChar(3, newChar4);
lcd.createChar(4, newChar5);
lcd.createChar(5, newChar6);
lcd.createChar(6, newChar7);
lcd.createChar(7, newChar8); }
void loop()
{ lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(0, 0);
lcd.print("C HOBblM ");
lcd.write(2);
lcd.print("O");
lcd.write(4);
lcd.print("OM!");
delay (5000);
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(0, 0);
lcd.print(" AKA");
lcd.write(4);
lcd.print("EM");
lcd.write(3);
lcd.write(1);
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.write(3);
lcd.print("H");
lcd.write(6);
lcd.print("OPMAT");
lcd.write(3);
lcd.print("K");
lcd.write(3);
lcd.print("!");
delay (5000);
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 0);
lcd.print(" HA");
lcd.write(4);
lcd.write(3);
lcd.write(7);
delay (5000); }
К оглавлению
_________ ____________________________________________________________________________________________________________________________________________________________

12

Название Жк-экран: имя
Описание Вывод на жк-экран своего имени
Схемы
Текст #include
#include
//LiquidCrystal_I2C lcd(0x3f,16,2);
LiquidCrystal_I2C lcd(0x27,16,2);
byte newChar1[8]=
{ 0b00011,
0b00101,
0b01001,
0b01001,
0b01001,
0b10001,
0b10001,
0b00000 };
byte newChar2[8]=
{ 0b01111,
0b10001,
0b10001,
0b01111,
0b00101,
0b01001,
0b10001,
0b00000 };
byte newChar3[8]=
{ 0b11111,
0b10000,
0b10000,
0b10000,
0b10000,
0b10000,
0b10000,
0b00000 };
byte newChar4[8] =
{ 0b10001,
0b10011,
0b10011,
0b10101,
0b11001,
0b11001,
0b10001,
0b00000 };
byte newChar5[8] =
{ 0b00100,
0b01010,
0b01010,
0b01010,
0b01010,
0b11111,
0b10001,
0b00000 };
byte newChar6[8] =
{ 0b10001,
0b10001,
0b01001,
0b00110,
0b00010,
0b00100,
0b01000,
0b00000 };
void setup()
{ lcd.init();
lcd.backlight();
lcd.begin(16, 2);
lcd.createChar(0, newChar1);
lcd.createChar(1, newChar2);
lcd.createChar(2, newChar3);
lcd.createChar(3, newChar4);
lcd.createChar(4, newChar5);
lcd.createChar(5, newChar6); }
void loop()
{ lcd.setCursor(0, 0);
lcd.print("C");
lcd.write(5);
lcd.write(0);
lcd.write(1);
lcd.write(2);
lcd.write(3);
lcd.print("H");
lcd.setCursor(0, 1);
lcd.print("A");
lcd.write(0);
lcd.print("EKCAH");
lcd.write(4);
lcd.print("P"); }
К оглавлению
_________ ____________________________________________________________________________________________________________________________________________________________

13

Название Фототир
Описание При нажатии на кнопку происходит измерение уровня освещенности по показаниям фоторезистора; если во время работы красного светодиода уровень освещенности фоторезистора меняется в большую сторону, то загорается зеленый светодиод, включается динамик, к числу на жк-экране прибавляется 1
Схемы
Текст #include
#include
LiquidCrystal_I2C lcd(0x3f,16,2);
//LiquidCrystal_I2C lcd(0x27,16,2);
int lightPin = A2;
int porog=60;
int ch=0;
int ft_trig=0;
int buttonPin = 10;
int potPin = A1;
int ledPin = 8;
int vl = 0;
long timers=0;
int p = 5;
long vrs=0;
int tmm=500;
int sh=0;
int sh_pop=0;
int shtm=0;
int fl_ftir=0;
int sh_sk=0;
void popal()
{ if(millis()-vrs >=tmm){ vrs=millis();
sh = sh + sh_pop;
//if (sh>2){digitalWrite(6, LOW);digitalWrite(8, LOW); sh=0; sh_pop=0; shtm=1;}
if (sh>2){digitalWrite(9, LOW);digitalWrite(8, LOW); sh=0; sh_pop=0; shtm=1;} }}
long vrst_sk=0;
int ind_sk=250;
//int sh_sk=0;
//int shtm=0;
//int fl_ftir=0;
void timer1()
{ if(millis()-vrst_sk >=ind_sk){ vrst_sk=millis();
sh_sk = sh_sk + shtm;
if(sh_sk==30) {digitalWrite(ledPin, HIGH);}
if(sh_sk==1) {digitalWrite(ledPin, HIGH);}
if(sh_sk==2) {digitalWrite(ledPin, LOW);}
if(sh_sk==3) {digitalWrite(ledPin, HIGH);}
if(sh_sk==4) {digitalWrite(ledPin, LOW);}
if(sh_sk==5) {digitalWrite(ledPin, HIGH);}
if(sh_sk==6) {digitalWrite(ledPin, LOW);}
if(sh_sk>6 & sh_sk<16) {fl_ftir=1; digitalWrite(ledPin, HIGH);}
if(sh_sk>16) {digitalWrite(ledPin, LOW); fl_ftir=0;}
if(sh_sk>26) {sh_sk=0;} }}
void zvuk()
{ tone (p, 500);
delay(100);
tone(p, 1000);
delay(100);
tone(p, 1500);
delay(100);
tone(p, 2000);
delay(100);
tone(p, 2500);
noTone(5);}}
void fototir()
{ vl=analogRead(lightPin);
if (porog==0) {porog=60;}
if (porog-vl>20) { if (ft_trig==0) {ft_trig=1; ch=ch+1;
digitalWrite(9, HIGH);
//digitalWrite(6, HIGH);
digitalWrite(8, LOW);
shtm=0;
sh_sk=0;
fl_ftir=0;
sh_pop=1;
//digitalWrite(9, HIGH);
//delay(5);
//digitalWrite(9, LOW);
zvuk();
String zap=" Popal! Chet= "+String(ch);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(zap);
lcd.setCursor(0, 1);
lcd.print("Rezult=");
lcd.print(1023-vl); } } else {ft_trig=0; ;} }
void knopka()
{ if (digitalRead(buttonPin)==HIGH)
{ ch=0;
vl=analogRead(lightPin);
timers=vl-20;
Serial.println(" ");
Serial.print("porog=");
Serial.println(timers);
Serial.print("znach=");
Serial.println(vl);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("porog=");
lcd.print(1023-timers);
lcd.setCursor(0, 1);
lcd.print("znach=");
lcd.print(1023-vl);
delay(4000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Obnulyem Schet");
Serial.println("Obnulyem Schet");
delay(2000);
lcd.setCursor(0, 1);
lcd.print("Start");
shtm=1; } }
void setup()
{ pinMode(buttonPin, INPUT);
pinMode(6, OUTPUT);
pinMode(ledPin, OUTPUT);
pinMode(9, OUTPUT);
lcd.init();
lcd.backlight();
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Programm Fotitir");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Nagmite knopky");
lcd.setCursor(0, 1);
lcd.print("Zadaty porog ch");
Serial.begin(9600);
Serial.println("Zadaite s terminala porog chustvitelnosti fotorezistora"); }
void loop()
{ timer1();
porog=timers;
if (fl_ftir==1){fototir();}
popal();
knopka();
//Serial.println("Zadaite s terminala porog chustvitelnosti fotorezistora");
delay(20); }
К оглавлению
_________ ____________________________________________________________________________________________________________________________________________________________

14

Название «Бегущий» символ
Описание вывод на жк экран приветствия и символа, двигающегося вправо по нижней строке жк-экрана
Схемы
Текст #include
#include
LiquidCrystal_I2C lcd(0x3f,16,2);
//LiquidCrystal_I2C lcd(0x27,16,2);
int s=0;
byte newChar1[8]=
{ 0b10001,
0b11011,
0b10101,
0b10101,
0b10001,
0b10001,
0b10001,
0b00000 };
byte newChar2[8]=
{ 0b11111,
0b10001,
0b10001,
0b10001,
0b10001,
0b10001,
0b10001,
0b00000 };
byte newChar3[8]=
{ 0b10001,
0b10001,
0b10011,
0b10101,
0b11001,
0b10001,
0b10001,
0b00000 };
byte newChar4[8] =
{ 0b11111,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000 };
byte newChar5[8] =
{ 0b00000,
0b01110,
0b01010,
0b01010,
0b01010,
0b01010,
0b01110,
0b00000 };
int i = 0; void setup()
{ lcd.init();
lcd.backlight();
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print(" KOLPINKURS.RU ");
delay(1000);
lcd.createChar(0, newChar1);
lcd.createChar(1, newChar2);
lcd.createChar(2, newChar3);
lcd.createChar(3, newChar4);
lcd.createChar(4, newChar5);
for(int n = 0; n < 15; n++)
{lcd.setCursor(n, 1);
lcd.write(3);
delay(100);
lcd.setCursor(0, 1);
lcd.print(" "); }
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(0, 0);
lcd.print("BCE");
lcd.write(0);
lcd.print(" ");
lcd.write(1);
lcd.print("P");
lcd.write(2);
lcd.print("BET !");
delay(1000);
lcd.setCursor(0, 1); }
void loop()
{ for(int n = 0; n < 15; n++)
{lcd.setCursor(n, 1);
lcd.write(4);
delay(300);
lcd.setCursor(0, 1);
lcd.print(" "); } }
К оглавлению
Наверх