这是周六周天做的arduion上位机:
把我有的所有传感器也都用上了哈,arduion本来很简单,驱动一般随便安装,一百行就搞定了,arduioon代码:
#include "DHT.h"
#include <Servo.h>
#include <Stepper.h>
Servo myservo;
//DHT11引脚
#define DHTPIN 3
#define DHTTYPE DHT11
//LED引脚
#define LED1 6
#define LED2 7
//风扇引脚
#define Fan 2
//蜂鸣器引脚
#define BUZZER 5
//土壤传感器引脚
#define PIN_AO 2
#define PIN_DO 13
DHT dht(DHTPIN, DHTTYPE);
int pin=12;//定义数字检测接口pin0
int val;//定义变量
int incomedate = 0;
//土壤湿度换算
float i=0;
float j=0;
void setup() {
//串口通信
Serial.begin(9600);
//初始化舵机的四个INFO
for (int i = 8; i < 12; i++) {
pinMode(i, OUTPUT);
}
//dht11
dht.begin();
//舵机
myservo.attach(4, 500, 2500);
pinMode(LED1,OUTPUT);
pinMode(LED2,OUTPUT);
pinMode(Fan,OUTPUT);
pinMode(BUZZER,OUTPUT);
digitalWrite(LED1,LOW);
digitalWrite(LED2,LOW);
digitalWrite(Fan,LOW);
}
//蜂鸣器发声
void buzzer_Di()
{
digitalWrite(BUZZER,LOW);
delay(200);
digitalWrite(BUZZER,HIGH);
}
void clockwise(int num)
{
for (int count = 0; count < num; count++)
{
for (int i = 8; i < 12; i++)
{
digitalWrite(i, HIGH);
delay(3);
digitalWrite(i, LOW);
}
}
}
void anticlockwise(int num)
{
for (int count = 0; count < num; count++)
{
for (int i = 11; i > 7; i--)
{
digitalWrite(i, HIGH);
delay(3);
digitalWrite(i, LOW);
}
}
}
void loop() {
//初始化让蜂鸣器不响
digitalWrite(BUZZER,HIGH);
val=digitalRead(pin);//读取模拟接口的值
if(Serial.available()) {
const int val = Serial.parseInt();
if(val == 250) {
digitalWrite(LED1,HIGH);
} else if(val==240){
digitalWrite(LED2,HIGH);
}else if(val==251){
digitalWrite(LED1,LOW);
}else if(val==241){
digitalWrite(LED2,LOW);
}else if(val==230){
digitalWrite(Fan,HIGH);
}else if(val==231){
digitalWrite(Fan,LOW);
}else if(val==220){
myservo.write(0);
}else if(val==221){
myservo.write(360);
}else if(val==210){
clockwise(512);
}else if(val==211){
anticlockwise(512);
}else if(val==100){
buzzer_Di();
}else if(val==101){
buzzer_Di();
}
}
delay(100);
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
// Compute heat index in Fahrenheit (the default)
float hif = dht.computeHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex(t, h, false);
//土壤湿度
float data=analogRead(PIN_AO);
i=data/1023;
j=(1-i)*100;
//湿度
Serial.print(h);
//温度
Serial.print(t);
//土壤湿度
Serial.print(j);
//障碍检测
if(val==1){
Serial.println(1);
}else{
Serial.println(2);
buzzer_Di();
}
}
下位机图: