我是一名高中生,喜欢玩Arduino,现正参加一个科技创新大赛
,明天就公开展出了,希望大神们给点建议或指导,Think you!!以下是程序:
//*********************用户自定义模块化云平台*********************************
//*********************广西师范大学附属中学创新实验室*************************
//*********************Write by*****************************************
//*********************http://www.gxsdfz.com**********************************
//*********************Date:2015.3.16*****************************************
#include <LiquidCrystal.h>
#include<Servo.h>
LiquidCrystal lcd(13, 12, 5, 4, 3, 2);
#define LED 13
byte x = 0;
Servo myservo;
int pos=0;
int Beep=8;
int wd=analogRead(4);
int key = 0;
float temperature = 0;
long val1=0;
int value=0;
int Pass=0;
char ss;
char Pass1_buf[4];
char Pass2_buf[4];
int z;
int b;
int dat;
int aj=7;
int p=1;
int dw=1,juli=0,num=0,jishu=0,flag=1;
/*SoftwareSerial serial1(7,6);//RX TX
SoftwareSerial serial2(3,2);//RX TX*/
void setup()
{
pinMode(1,INPUT);
Serial.begin(9600);
pinMode(LED,OUTPUT);
pinMode(Beep,OUTPUT);
pinMode(8,OUTPUT);
pinMode(LED,OUTPUT);
pinMode(aj,INPUT);
pinMode(6,OUTPUT);
pinMode(10,OUTPUT);
lcd.begin(16, 2);
delay(1000);
pinMode(9,OUTPUT);
}
//--------------------GM_Mode---------------------//
void GM()
{
lcd.clear();
lcd.setCursor(4,0);
lcd.print("GM_Mode");
lcd.setCursor(1, 1);
lcd.print("Enter");
delay(500);
lcd.clear();
Serial.println("GM_Mode");
Serial.println("Enter");
int o=analogRead(5);
while(key<1)
{
if (analogRead(5)<=40)
{
digitalWrite(9,HIGH);}
else{digitalWrite(9,LOW);
}
switch(Serial.read())
{case'q':
key=2;
lcd.clear();
lcd.print("back");
delay(500);
lcd.clear();
Serial.println("back");
break;}}
}//pass
//--------------------HY_Mode-------------------------//
void HY()
{int i=0;
/*lcd.clear();
lcd.setCursor(4,0);
lcd.print("HY_Mode");
lcd.setCursor(1, 1);
lcd.print("Enter");
delay(500);
lcd.clear();*/
Serial.println("HY_Mode");
Serial.println("Enter");
while(key<1)
{
if (analogRead(0)>=10)
{
lcd.clear();
lcd.print("Fire out");
Serial.println("Fire out");
delay(1000);
lcd.clear();
lcd.setCursor(0, 1);
for (int i=0;i<=255;i++)
{
tone(Beep,i);
}
}
else
{
noTone(Beep);
Serial.println("No Fire");
delay(2000);}
switch(Serial.read())
{case'q':
key=2;
noTone(Beep);
lcd.clear();
lcd.print("back");
delay(500);
lcd.clear();
Serial.println("back");
break;}}
}//pass
//-----------------Relay_Mode--------------------//
void Relay()
{Serial.println("Relay_Mode");
Serial.println("Enter");
while(key<1)
{
if(Serial.available())
{delay(100);
switch(Serial.read())
{
case'1':
digitalWrite(6,HIGH);
Serial.println("jidian1 open");
break;
case'2':
digitalWrite(6,LOW);
Serial.println("jidian1 close");
break;
case'3':
digitalWrite(10,HIGH);
Serial.println("jidian2 open");
break;
case'4':
digitalWrite(10,LOW);
Serial.println("jidian2 close");
break;
case'q':
key=2;
Serial.println("back");
break;}}}}//pass
//-------------------WD_Mode-----------------------------//
void WD()
{
lcd.clear();
lcd.setCursor(4,0);
lcd.print("WD_Mode");
lcd.setCursor(1, 1);
lcd.print("Enter");
delay(500);
lcd.clear();
Serial.println("WD_Mode");
Serial.println("Enter");
while(key<1)
{
val1=analogRead(wd);
temperature = (val1*0.0048828125*1000);
lcd.clear();
lcd.print("Temperature");
lcd.setCursor(0, 1) ;
lcd.print((long)temperature / 10);
lcd.print(".");
lcd.print( (long)temperature % 10);
lcd.print((char)223);
lcd.print("C");
delay(2000);
lcd.clear();
b=analogRead(4);
/*dat=(float)b*0.0048828125*1000;*/
temperature = (b*0.0048828125*1000);
Serial.print("Tep");
Serial.print((long)temperature / 10);
Serial.print(".");
Serial.print( (long)temperature % 10);
Serial.println("C");
delay(500);
/*if (wd>=100)
{digitalWrite(8,HIGH);}
else{digitalWrite(8,LOW);} */
switch(Serial.read())
{case'q':
key=2;
lcd.clear();
lcd.print("back");
delay(500);
lcd.clear();
Serial.println("back");
break;} }
}
//---------------------Led_Mode-----------------------//
void Led_Mode()
{
lcd.clear();
lcd.setCursor(4,0);
lcd.print("Led_Mode");
lcd.setCursor(1, 1);
lcd.print("Enter");
delay(500);
lcd.clear();
Serial.println("Led_Mode");
Serial.println("Enter");
while(key<1)
{ if(Serial.available())
{delay(100);
switch(Serial.read())
{
case'1':
digitalWrite(9,HIGH);
break;
case'2':
digitalWrite(9,LOW);
break;
case'q':
key=2;
lcd.clear();
lcd.print("back");
delay(500);
lcd.clear();
Serial.println("back");
break;}
}
}
}
//----------------------Led_PWM_Mode-----------------------//
void Led_PWM()
{
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Led_PWM");
lcd.setCursor(1, 1);
lcd.print("Enter");
delay(500);
lcd.clear();
Serial.println("Led_PWM");
Serial.println("Enter");
while(key < 1)
{
if (Serial.available())
{
delay(100);
switch(Serial.read())
{
case'1':
value=value+20;
if (Serial.read()=='+')
analogWrite(9,value);
break;
case'3':
value=value-20;
if (Serial.read()=='-')
analogWrite(9,value);
break;
case'max':
analogWrite(9,255);
break;
case'min':
analogWrite(9,0);
break;
case'q':
key=2;
lcd.clear();
lcd.print("back");
delay(500);
lcd.clear();
Serial.println("back");
break;}
}
}
}
//----------------------Led_Breath_Mode---------------//
void Led_Breath()
{
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Led_Breath");
lcd.setCursor(1, 1);
lcd.print("Enter");
delay(500);
lcd.clear();
Serial.println("Led_Breath");
Serial.println("Enter");
while(key < 1)
{
switch(Serial.read())
{
/* case'1':*/
for(int x=0;x<=255;x++)
{analogWrite(9,x);
delay(10);}
/* break;
case'2':
for(int x=255;x>=0;x--)
{analogWrite(9,x);
delay(10);}
break;
/* case'all':
for(int x=0;x<=255;x++)
analogWrite(9,x);
delay(100);
for(int x=255;x>=0;x--)
analogWrite(9,x);
break;*/
case'q':
key=2;
lcd.clear();
lcd.print("back");
delay(500);
lcd.clear();
Serial.println("back");
break;}
}
}
//----------------------Led_Receive_Mode---------------------//
void Led_Receive()
{
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Led_Receive_Mode");
lcd.setCursor(1, 1);
lcd.print("Enter");
lcd.clear();
delay(500);
Serial.println("Led_Receive_Mode");
Serial.println("Enter");
while(key<1)
{
if(Serial.available())
{
delay(100);
switch(Serial.read())
{
case'1':
digitalWrite(9,HIGH);
delay(1000);
digitalWrite(9,LOW);
case'q':
key=2;
lcd.clear();
lcd.print("back");
delay(500);
lcd.clear();
Serial.println("back");
break;
}
}
}
}
//------------------------Servo_Mode----------------------//
/*void servo()
{
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Servo_Mode");
lcd.setCursor(1, 1);
lcd.print("Enter");
delay(500);
lcd.clear();
Serial.println("Servo_Mode");
Serial.println("Enter");
while(key<1)
{
if (Serial.available())
{
delay(100);
switch(Serial.read())
{case'1':
for(pos=0;pos<180;pos+=1)
{myservo.write(pos);
delay(15);}
break;
case'2':
for(pos=180;pos>=1;pos-=1)
{ myservo.write(pos);
delay(15);}
break;
case'q':
key=2;
lcd.clear();
lcd.print("back");
delay(500);
lcd.clear();
Serial.println("back");
break;}
}
}
}*/
//-----------------------CBS_Mode--------------------------//
/*void CBS()
{
lcd.clear();
lcd.setCursor(1, 0);
lcd.print("CBS_Mode");
lcd.setCursor(0, 1);
lcd.print("Enter");
delay(500);
lcd.clear();
Serial.println("CBS_Mode");
Serial.println("Enter");
while(key<1)
{
if(Serial.available())
{delay(100);
switch(Serial.read())
{
case'1':
Wire.beginTransmission(4);
Wire.write("CBS");
Wire.write(y);
Wire.endTransmission();
y++;
if(y==2)
y=0;
delay(500);
Wire.requestFrom(4,1);
while(Wire.available()==1)
{
lcd.clear();
lcd.print("CBS Receive Well");
Serial.println("CBS Receive Well");
delay(1000);
lcd.clear();
lcd.setCursor(0, 1) ;
}
delay(1000);
break;
case'q':
key=2;
lcd.clear();
lcd.print("back");
delay(500);
lcd.clear();
Serial.println("back");
break;}
}
}
}*/
//-----------------------Pass_set_Mode----------------------//
void Pass_set()
{
lcd.clear();
lcd.setCursor(1, 0);
lcd.print("Pass_set_Mode");
lcd.setCursor(0, 1);
lcd.print("Set Code1 4 Numb");
delay(500);
lcd.clear();
Serial.println("Pass_set_Mode");
Serial.println("Enter");
while(key<1)
{ if(Pass==0)
{if(Serial.available())
{delay(100);
if (Serial.available() > 0)
{
for(int i = 0;i<4;i++)
{
Pass1_buf = Serial.read();
}
lcd.clear();
lcd.setCursor(1, 0);
lcd.print("Now goto 6 Mode");
lcd.setCursor(4, 1);
lcd.print("Get It");
Pass= 1;
}
}
}
switch(Serial.read())
{case'q':
key=2;
lcd.clear();
lcd.print("back");
delay(500);
lcd.clear();
Serial.println("back");
break;}
}
}
//-----------------------Pass_words_Mode----------------------//
void Pass_words()
{
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Enter Pass_words");
delay(500);
lcd.clear();
Serial.println("Pass_set_Mode");
Serial.println("Enter");
while(key < 1)
{
if(Pass == 1)
{
if (Serial.available())
{
delay(100);
if (Serial.available() > 0)
{
for(int i = 0;i<4;i++)
{
Pass2_buf = Serial.read();
}
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("cheak");
lcd.setCursor(2, 1);
lcd.print("Enter Again");
delay(500);
lcd.clear();
if ( Pass1_buf[0] == Pass2_buf[0] && Pass1_buf[1] == Pass2_buf[1] &&
Pass1_buf[2] == Pass2_buf[2] && Pass1_buf[3] == Pass2_buf[3] )
{
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(" / to Exit ");
lcd.setCursor(7, 1);
lcd.print("OK");
delay(500);
lcd.clear();
Serial.println("OK");
}
}
}
}
switch(Serial.read())
{case'q':
key=2;
lcd.clear();
lcd.print("back");
delay(500);
lcd.clear();
Serial.println("back");
break;}
}
}
//---------------Write_Mode--------------------//
/*void Write()
{ lcd.clear();
lcd.setCursor(4, 0);
lcd.print("Write_Mode");
lcd.setCursor(1, 1);
lcd.print("Write Anything");
delay(500);
lcd.clear();
while(key < 1)
{
if (Serial.available())
{
delay(100);
lcd.clear();
while (Serial.available() > 0)
{
lcd.write(Serial.read());
}
}
switch(Serial.read())
{
case'q':
key=2;
lcd.clear();
lcd.print("back");
delay(500);
lcd.clear();
Serial.println("back");
break;}
}
}*/
//---------------------analog_Read_Mode--------------//
void analog_Read()
{
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("Serial_analog");
lcd.setCursor(0, 1);
lcd.print("Enter");
delay(500);
lcd.clear();
while(key<1)
{
int sensorValue = analogRead(0);
int sensorValue1 = analogRead(4);
int sensorValue2= analogRead(5);
Serial.print("sensorHY = " );
Serial.println(sensorValue );
delay(1000);
Serial.print("sensorWD= " );
Serial.println(sensorValue1 );
delay(1000);
Serial.print("sensorGM = " );
Serial.println(sensorValue2 );
delay(1000);
delay(1000);
switch(Serial.read())
{
case 'q':
key = 2;
lcd.clear();
lcd.print("back");
delay(500);
lcd.clear();
Serial.println("back");
break;
}
}
}
//-------------------BlueTooth_Mode-----------------//
void BlueTooth_Mode()
{
if(Serial.available()>0)
{/*lcd.clear();
lcd.setCursor(4, 0);
lcd.print("SET Mode");
lcd.setCursor(1, 1);
lcd.print("= KEYES team =");
delay(500);
lcd.clear();*/
Serial.println("BlueTooth_Mode");
Serial.println("Enter");
key = 0;}
while(key<1){
switch(Serial.read())
{
case'1':
GM();
Serial.println("GM");
break;
case'2':
HY();
Serial.println("HY");
break;
case'3':
WD();
Serial.println("WD");
break;
case'4':
Led_Mode();
Serial.println("Led_Mode");
break;
/* case'5':
Led_PWM();
Serial.println("Led_PWM");
break;
case'6':
Led_Breath();
Serial.println("Led_Breath");
break;
case'7':
Led_Receive();
Serial.println("Led_Receive");
break;*/
case'8':
Pass_set();
Serial.println("Pass_set");
break;
case'9':
Pass_words();;
Serial.println(" Pass_words");
break;
/*case'a':
Write();
Serial.println("Write");
break;*/
case'b':
analog_Read();
Serial.println("analog_Read");
break;
/*case'c':
servo();
Serial.println("servo");
break;*/
case'c':
free();
Serial.println("free");
break;
case'd':
Relay();
Serial.println("Relay");
break;
/*case'e':
IR();
Serial.println("IR");*/
case'q':
key=2;
Serial.println("back");
break;}
}
}
//-------------------------------free_Mode----------------------//
void free()
{
while(key<1)
{
switch(Serial.read())
{if (
analogRead(5)<=50)
{digitalWrite(9,HIGH);}
else {digitalWrite(9,LOW);}
/*if (analogRead(0)>=20)
{for (int i=200;i<=800;i++)
{
tone(Beep,i);
}}
else{
noTone(Beep);}
if (analogRead(4)>=600)
{digitalWrite(9,HIGH);
}
else{digitalWrite(9,LOW);}*/
case'q':
key=2;
Serial.println("back");
break;}
}
}
//--------------------------------loop--------------------------------//
void loop()
{
z=0;
while(digitalRead(7)>0)
{
delay(100);
z=(z+1);
}
if ((((z%2))==(1)))
{
Serial.println("free");
Serial.println("Enter");
delay(1000);
free();
}
if ((((z%2))==(0)))
{Serial.println("BlueTooth_Mode");
Serial.println("Enter");
delay(1000);
BlueTooth_Mode();
}
}
//--------------------------------END----------------------------------//
ps:程序有点乱,出自高中生之手,希望理解,谢谢
有几个问题想问下给位大神:
1、液晶无法显示,我是用4位的,如果是单一程序(如温显)可以显示,但是多了开始就乱码,后来就无法显示;
2、LM35温传烧了,我用热敏代替,请问有计算公式不;
3、主从机问题,我还写了个从机程序,但与蓝牙冲突,I2C表示正在学,一时用不了,软传还是会与蓝牙冲突,怎么办(或是我软传没学好,能给个详细程序没);
4、蓝牙与红外会冲突没,如有,怎么解决;
5、按键判断奇偶会出现一个问题 :不按时会判断0(整除);按一下判断余一(正常),但松开后又判断为0,怎么解决,或者用计数?最好有详细程序;
6、为什么用蓝牙串口接收温度数据会出现问号(显示问号)
。。。。。。
还有些问题还会及时发再发,我从现在到两点都在线,希望各位大神帮个忙,感激不尽,好人一生平安!!!
下面是从机程序(未完程)
//*********************用户自定义模块化云平台*********************************
//*********************广西师范大学附属中学创新实验室*************************
//*********************Write by*****************************************
//*********************http://www.gxsdfz.com**********************************
//*********************Date:2015.3.16*****************************************
#include <IRremote00.h>
#include <ctype.h>
#include <Wire.h>
/*#include <Servo.h>
Servo myservo;*/
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
long on1 = 0x00FFA25D;
long off1 = 0x00FFE01F;
long on2 = 0x00FF629D;
long off2 = 0x00FFA857;
long on3 = 0x00FFE21D;
long off3 = 0x00FF906F;
long on4 = 0x00FF22DD;
long off4 = 0x00FF6897;
long on5 = 0x00FF02FD;
long off5 = 0x00FF9867;
long on6 = 0x00FFC23D;
long off6 = 0x00FFB047;
int pos=0;
int key=0;
int sy=3;
void setup()
{
pinMode(12,OUTPUT);
pinMode(2,OUTPUT); // 定义LED为输出引脚
Serial.begin(9600); //开启串口通信,并设定波特率为9600
irrecv.enableIRIn();
pinMode(sy,OUTPUT);
/*myservo.attach(3);*/
//启动红外解码
}
void irdisplay(unsigned long value)
{
switch(value){
case 0xFFA25D:
Serial.println("POWER");
digitalWrite(12, HIGH);
break;
case 0xFF629D:
Serial.println("Mode");
digitalWrite(12, LOW);
break;
case 0xFFE21D:
Serial.println("MUTE");
digitalWrite(2,HIGH);
break;
case 0xFF22DD:
Serial.println("PLAY/PAUSE");
digitalWrite(2,LOW);
break;
case 0xFF02FD:
Serial.println("PREV");
digitalWrite(12, HIGH);
digitalWrite(2,HIGH);
break;
case 0XFFC23D:
Serial.println("NEXT");
digitalWrite(12, LOW);
digitalWrite(2,LOW);
break;
case 0xFFE01F:
Serial.println("EQ");
/*for(pos=0;pos<180;pos+=1)
{myservo.write(pos);
delay(15);
}*/
IR_Receiver();
break;
case 0xFFA857:
Serial.println("-");
/*for(pos=180;pos>=1;pos-=1)
{ myservo.write(pos);
delay(15);}*/
SY();
break;
case 0xFF906F:
Serial.println("+");
YW();
break;
case 0xFF6897:
Serial.println("0");
/*CBS();*/
break;
case 0xFF9867:
Serial.println("BACK");
break;
/*case 0xFFB04F:
Serial.println("U/SD");
break;
case 0xFF30CF:
Serial.println("1");
break;
case 0xFF18E7:
Serial.println("2");
break;
case 0xFF7A85:
Serial.println("3");
break;
case 0xFF10EF:
Serial.println("4");
break;
case 0xFF38C7:
Serial.println("5");
break;
case 0xFF5AA5:
Serial.println("6");
break;
case 0xFF42BD:
Serial.println("7");
break;
case 0xFF4AB5:
Serial.println("8");
break;
case 0xFF52AD:
Serial.println("9");
break;*/
}
}
//--------------------------------CBS_Mode---------------
/*void ()
{
Serial.print("CBS");
Serial.print("Enter");
int value;
while (key<1)
{
*/
//---------------------------------SY_Mode------------------
void SY()
{
Serial.print("SY");
Serial.print("Enter");
int value;
while(key<1)
{
if (sy==LOW)
{ digitalWrite(12,HIGH);
digitalWrite(2,HIGH);
}
else {digitalWrite(12,LOW);
digitalWrite(2,LOW);}
switch(value)
{ case 0xFF52AD:
Serial.println("9");
key=2;
Serial.println("back");
break;
}
}
}
//--------------------------------YW_Mode-----------------------------
void YW()
{ Serial.print("YW");
Serial.print("Enter");
int value;
while(key<1)
{if (analogRead(0)>=300)
{
digitalWrite(12,HIGH);
Serial.println("danger");
/*for(pos=0;pos<180;pos+=1)
{myservo.write(pos);
delay(15);}*/}
else
{digitalWrite(12,LOW);
/*for(pos=180;pos>=1;pos-=1)
{ myservo.write(pos);
delay(15);}*/}
switch (value)
{ case 0xFF52AD:
Serial.println("9");
key=2;
Serial.println("back");
break;
}
}
}
//--------------------------IR_Receiver _Mode---------------------
void IR_Receiver()
{
if (irrecv.decode(&results)) {
Serial.print("irCode: ");
Serial.print(results.value,HEX);
delay(100);
Serial.print(", bits: ");
Serial.println(results.bits);
irrecv.resume();
}
}
//----------------------------loop----------------------------------
void loop() {
if (irrecv.decode(&results))
{
irdisplay(results.value);
irrecv.resume();
}
}
|