久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
arduino SCoop多線程庫和PS2鍵盤應(yīng)用—arduino智能溫室
[打印本頁]
作者:
阿斯頓ll
時間:
2020-3-11 19:40
標(biāo)題:
arduino SCoop多線程庫和PS2鍵盤應(yīng)用—arduino智能溫室
由于都知道的原因,最近樓主在家閑來無事,搞了個這個項目。新人第一個項目,有可改進(jìn)之處請不吝賜教!
具體功能:
1.溫濕度控制。通過土壤濕度傳感器獲取土壤濕度,達(dá)到閾值時啟動水泵;通過lm35溫度傳感器獲取環(huán)境溫度,
達(dá)到閾值時啟動風(fēng)扇(水泵,風(fēng)扇用8050三極管驅(qū)動);
2.溫濕度顯示。這個就不用多說了,用2004i2c接口lcd顯示溫濕度;
3.時間顯示。通過ds1302芯片獲取時間;顯示在lcd上;
4.溫濕度閾值與時間更改。通過ps2鍵盤更改溫濕度閾值,將數(shù)據(jù)儲存在eeprom中,開機自動讀取
硬件部分暫時還沒搞完,是把arduino搞出最小系統(tǒng)焊到洞洞板上,在接外設(shè)。由于師傅作業(yè)奇多(網(wǎng)課),估計得一段時間了。
代碼:
附上用到的庫:
DS1302.zip
(124.53 KB, 下載次數(shù): 5)
2020-3-11 19:38 上傳
點擊文件名下載附件
da1302時鐘庫
下載積分: 黑幣 -5
SCoop.zip
(35.81 KB, 下載次數(shù): 15)
2020-3-11 19:38 上傳
點擊文件名下載附件
多線程scoop庫
下載積分: 黑幣 -5
作者:
阿斯頓ll
時間:
2020-3-12 10:27
。。。。。代碼不見了 重新傳
#include <LiquidCrystal_I2C.h>
#include <DS1302.h>
#include <PS2Keyboard.h>
#include <EEPROM.h>
#include <SCoop.h>
#include <stdlib.h>
#define tvaddr 0
#define lvaddr 1
#define wvaddr 2
LiquidCrystal_I2C lcd_0(0x27, 20, 4);
DS1302 rtc(8, 7, 6);
PS2Keyboard keyboard;
int led_0 = A0;
int m1 = 1;
int m2 = 4;
int lightSensor_0 = A1;
int soilhumi = A2;
int lm35 = A3;
int temp;
int humi;
int illu;
bool op = 0;
String t;
char tv1;
String tv2;
int tv3;
char lv1;
String lv2;
int lv3;
char wv1;
String wv2;
int wv3;
char op1;
String op2;
int op3;
char np1;
String np2;
int np3;
char ip1;
String ip2;
int ip3;
char c;
const int DataPin = 3;
const int IRQpin = 2;
int numdata[7] = {0};
void setup()
{
lcd_0.init();
lcd_0.backlight();
lcd_0.setCursor(4, 0);
lcd_0.print("Intellegent");
lcd_0.setCursor(2, 1);;
lcd_0.print("Greenhouse v4.0");
lcd_0.setCursor(6, 2);
lcd_0.print("based on");
lcd_0.setCursor(3, 3);
lcd_0.print("ATmega 328p-pu");
delay(2000);
lcd_0.clear();
lcd_0.setCursor(3, 0);
lcd_0.print("Setting up...");
pinMode(led_0, OUTPUT);
pinMode(m1, OUTPUT);
pinMode(m2, OUTPUT);
pinMode(lightSensor_0, INPUT);
pinMode(soilhumi, INPUT);
keyboard.begin(DataPin, IRQpin);
tv3 = EEPROM.read(tvaddr);
lv3 = EEPROM.read(lvaddr);
wv3 = EEPROM.read(wvaddr);
delay(1200);
lcd_0.clear();
rtc.setTCR(TCR_OFF);
rtc.halt(false);
/*rtc.writeProtect(false);
rtc.setDOW(WEDNESDAY);
rtc.setTime(19, 41, 00);
rtc.setDate(11, 3, 2020);
rtc.writeProtect(true);*/
lcd_0.setCursor(0, 1);
lcd_0.print("illu");
lcd_0.setCursor(0, 2);
lcd_0.print("humi");
lcd_0.setCursor(0, 3);
lcd_0.print("temp");
mySCoop.start();
}
void loop()
{
yield();
}
defineTaskLoop(Getdata)
{
humi = map(analogRead(soilhumi), 0, 1023, 100, 0);
illu = map(analogRead(lightSensor_0), 0, 1023, 0, 102.3);
temp = (5 * analogRead(lm35) * 100)/1024;
}
defineTaskLoop(Operate)
{
if (illu < lv3)
{
digitalWrite(led_0, HIGH);
}
else
{
digitalWrite(led_0, LOW);
}
if (temp < tv3-1)
{
digitalWrite(m1, LOW);
}
else if (temp > tv3+1)
{
digitalWrite(m1, HIGH);
}
if (humi < wv3)
{
digitalWrite(m2, HIGH);
}
else
{
digitalWrite(m2, LOW);
}
if(keyboard.available())
{
if(keyboard.read == PS2_F1)
{
menu();
}
}
clockdate();
}
defineTaskLoop(Display)
{
lcd_0.setCursor(7, 1);
lcd_0.print(illu);
lcd_0.setCursor(7, 2);
lcd_0.print(humi);
lcd_0.setCursor(7, 3);
lcd_0.print(temp);
if (illu < 10)
{
lcd_0.setCursor(8, 1);
lcd_0.print(" ");
}
if (illu < 100)
{
lcd_0.setCursor(9, 1);
lcd_0.print(" ");
}
if (humi < 100)
{
lcd_0.setCursor(9, 3);
lcd_0.print(" ");
}
if (humi < 10)
{
lcd_0.setCursor(8, 3);
lcd_0.print(" ");
}
if (temp < 100)
{
lcd_0.setCursor(9, 2);
lcd_0.print(" ");
}
if (temp < 10)
{
lcd_0.setCursor(8, 2);
lcd_0.print(" ");
}
}
void clockdate()
{
lcd_0.setCursor(0, 0);
lcd_0.print(rtc.getDateStr(FORMAT_LONG,FORMAT_LITTLEENDIAN, '/'));// check 1302 library and see FORMAT_BIGENDIAN:2010-01-01;FORMAT_LITTLEENDIAN:01-01-2010
lcd_0.print(" ");
lcd_0.print(rtc.getDOWStr());
lcd_0.print(" ");
lcd_0.print(rtc.getTimeStr());
}
void menu()
{
lcd_0.clear();
lcd_0.setCursor(0, 0);
lcd_0.print("1--set time");
lcd_0.setCursor(0, 1);
lcd_0.print("2--set temp vaule");
lcd_0.setCursor(0, 2);
lcd_0.print("3--set light vaule");
lcd_0.setCursor(0, 3);
lcd_0.print("4--set water vaule");
c = keyboard.read();
switch (c)
{
case 1:
lcd_0.clear();
lcd_0.setCursor(0, 0);
lcd_0.print("Input:y,m,d,h,m,s,w.");
lcd_0.setCursor(0, 1);
lcd_0.print("Divide by ','");
t += char(keyboard.read());
lcd_0.setCursor(0, 2);
lcd_0.print(t);
delay(6000);
int j = 0;
for(int i = 0; i < t.length() ; i++)
{
if(t[i] == ',')
{
j++;
}
else
{
numdata[j] = numdata[j] * 10 + (t[i] - '0');
}
}
t = String("");
for(int i = 0; i < 7; i++)
{
numdata[i] = 0;
}
rtc.writeProtect(false);
rtc.setDOW(numdata[6]);
rtc.setTime(numdata[3], numdata[4], numdata[5]);
rtc.setDate(numdata[2], numdata[1], numdata[0]-2000);
rtc.writeProtect(true);
lcd_0.clear();
lcd_0.setCursor(0, 0);
lcd_0.print("Time had been set!");
delay(1500);
break;
case 2:
lcd_0.clear();
lcd_0.setCursor(0, 0);
lcd_0.print("Input temp value:");
tv1 = keyboard.read();
lcd_0.setCursor(0, 1);
lcd_0.print(tv1);
if (isDigit(tv1))
{
tv2 += tv1;
}
else if (tv1 == PS2_ENTER)
{
tv3 = tv2.toInt();
EEPROM.update(tvaddr, tv3);
lcd_0.clear();
lcd_0.setCursor(0, 0);
lcd_0.print("Tv had been set");
delay(1500);
}
break;
case 3:
lcd_0.clear();
lcd_0.setCursor(0, 0);
lcd_0.print("Input light value:");
lv1 = keyboard.read();
lcd_0.setCursor(0, 1);
lcd_0.print(lv1);
if (isDigit(lv1))
{
lv2 += lv1;
}
else if (lv1 == PS2_ENTER)
{
lv3 = lv2.toInt();
EEPROM.update(lvaddr, lv3);
lcd_0.clear();
lcd_0.setCursor(0, 0);
lcd_0.print("Lv had been set");
delay(1500);
}
break;
case 4:
lcd_0.clear();
lcd_0.setCursor(0, 0);
lcd_0.print("Input water value:");
wv1 = keyboard.read();
lcd_0.setCursor(0, 1);
lcd_0.print(wv1);
if (isDigit(wv1))
{
wv2 += wv1;
}
else if (wv1 == PS2_ENTER)
{
wv3 = wv2.toInt();
EEPROM.update(wvaddr, wv3);
lcd_0.clear();
lcd_0.setCursor(0, 0);
lcd_0.print("Wv had been set");
delay(1500);
}
break;
}
}
復(fù)制代碼
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
久久久久亚洲精品
|
国产精品国产精品国产专区不蜜
|
亚洲欧洲激情
|
在线日韩中文字幕
|
一区二区三区四区电影
|
色综合激情
|
久久久久国产一区二区
|
国产亚洲成av人片在线观看桃
|
性做久久久久久免费观看欧美
|
中文字幕一区在线
|
国产精品日韩高清伦字幕搜索
|
日韩视频在线播放
|
91精品国产91久久久久久密臀
|
特级a欧美做爰片毛片
|
国产精品不卡
|
午夜看片网站
|
亚洲在线一区二区
|
国产精品一区在线观看你懂的
|
久久91精品国产一区二区
|
亚洲精品中文字幕在线观看
|
国产综合久久久久久鬼色
|
91精品国产一区二区三区
|
日日操日日干
|
国产精品久久久
|
日韩1区2区
|
一区二区三区国产视频
|
亚洲精品视频导航
|
午夜精品一区二区三区在线观看
|
99久久免费精品国产男女高不卡
|
亚洲乱码国产乱码精品精的特点
|
亚洲一区在线播放
|
国产精品视频网
|
亚洲啪啪一区
|
九九久久精品
|
久久精品一级
|
亚洲福利
|
国产精品永久免费
|
99re在线视频免费观看
|
日日噜噜夜夜爽爽狠狠
|
黄色精品视频网站
|
欧美aaaaa
|