子程序怎么循环啊-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9193|回复: 8

[已解决] 子程序怎么循环啊

[复制链接]
发表于 2014-4-21 22:52 | 显示全部楼层 |阅读模式
一下是我的程序  
#include <Wire.h>
#include "pitches.h"
#include <Servo.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int qiti;//qiti sensor
int turang;//turang sensor
int guangqiang;
char val;
char m;
Servo servo;
===================================
void setup()
{guangqiang=0;
  Serial.begin(9600);
  pinMode(4,OUTPUT);
  pinMode( 13 , OUTPUT);
  servo.attach(9);
    lcd.init(); // initialize the lcd
// Print a message to the LCD.
lcd.backlight();
lcd.clear();                  // 清除LCD畫面  
  lcd.setCursor(4, 0);          //設定顯示開始位置
  lcd.print("SET Mode");        //顯示內容
  lcd.setCursor(1, 1);          //設定顯示開始位置
  lcd.print("=*KEYES-HOME*=");   //顯示內容
}
===========================================
void lanya(){
  val=Serial.read();
  if(val=='r')
  {
    digitalWrite(13,HIGH);
    delay((500));
    digitalWrite(13,LOW);
    delay(500);
   Serial.println("keyes");
  }
}
  =========================================
void lianwang(){
lcd.clear();
lcd.init(); // initialize the lcd
// Print a message to the LCD.
lcd.backlight();
if(( ( guangqiang) <= ( 800) ))
{
digitalWrite(13 , HIGH );
}
else
{
digitalWrite( 13 , LOW );
}
   lcd.print("Moisture :");
lcd.setCursor(0, 1) ;
lcd.print(analogRead(0));
lcd.setCursor(0, 0) ;
    int qitisensor=analogRead(2);
  qiti=qitisensor;
      int turangsensor=analogRead(0);
  turang=turangsensor;
Serial.print("t1:");
  Serial.print(qiti);
  Serial.print(";t2:");
Serial.println(turang);
if (( ( turang ) <= ( 300)))
{
  servo.write( 90);
}
else{servo.write(0);}
if (( ( qiti ) >= ( 111)))
  {
digitalWrite(4 , HIGH );
}
else
{
digitalWrite(4, LOW );
}
delay(1000);
  }
=================================================
void loop()
{ lcd.setCursor(4, 0);
   lcd.print("SET Mode");
   lcd.setCursor(1, 1); // set LCD word position
   lcd.print("= KEYES team =");
   if (Serial.available() )
   {
     delay(100);
   switch(Serial.read())
   {
     case '1': //第一個字元是1的話進入   
           lanya();
         break;  
     case '2': //第一個字元是2的話進入   
           lianwang();
         break;  
   }
}
}




我想把子程序lianwang的程序进行循环  怎么做呢

发表于 2014-4-21 22:57 | 显示全部楼层
放到loop()就循环了呢。不然在里面加个while也可以。
 楼主| 发表于 2014-4-21 23:00 | 显示全部楼层
智能创客 发表于 2014-4-21 22:57
放到loop()就循环了呢。不然在里面加个while也可以。

问题是LOOP  已经用了    加while 怎么加呢用什么作为条件呢
发表于 2014-4-21 23:02 | 显示全部楼层
hini111 发表于 2014-4-21 23:00
问题是LOOP  已经用了    加while 怎么加呢用什么作为条件呢

放loop就ok了,他会一直循环的。
 楼主| 发表于 2014-4-21 23:04 | 显示全部楼层
智能创客 发表于 2014-4-21 23:02
放loop就ok了,他会一直循环的。

我LOOP  里面已经有CASE   lianwang这个程序就是case  跳出去的
发表于 2014-4-21 23:06 | 显示全部楼层
你想一直死循环吗?那么这样void lianwang(){
while(1)
{
lcd.clear();
lcd.init(); // initialize the lcd
// Print a message to the LCD.
lcd.backlight();
if(( ( guangqiang) <= ( 800) ))
{
digitalWrite(13 , HIGH );
}
else
{
digitalWrite( 13 , LOW );
}
   lcd.print("Moisture :");
lcd.setCursor(0, 1) ;
lcd.print(analogRead(0));
lcd.setCursor(0, 0) ;
    int qitisensor=analogRead(2);
  qiti=qitisensor;
      int turangsensor=analogRead(0);
  turang=turangsensor;
Serial.print("t1:");
  Serial.print(qiti);
  Serial.print(";t2:");
Serial.println(turang);
if (( ( turang ) <= ( 300)))
{
  servo.write( 90);
}
else{servo.write(0);}
if (( ( qiti ) >= ( 111)))
  {
digitalWrite(4 , HIGH );
}
else
{
digitalWrite(4, LOW );
}
delay(1000);
  }
}
 楼主| 发表于 2014-4-21 23:30 | 显示全部楼层
智能创客 发表于 2014-4-21 23:06
你想一直死循环吗?那么这样void lianwang(){
while(1)
{

那怎么跳出来呢   循环有用了
发表于 2014-4-22 04:58 | 显示全部楼层
n=1
While n=1{
子程序
if(条件满足){
n=2}
}
发表于 2014-4-22 09:38 | 显示全部楼层
顶上正解,
int n=1
While (n=1){
  子程序
  if(条件满足){
    n=2
  }
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-5 03:44 , Processed in 0.074027 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表