Arduino自助饮料机程序

 

arduino自助饮料机程序,一共三个按键,分别对应三种饮料,按下按键之后,需要用手去触发红外感应开关,这个时候全彩led灯会亮起来,然后出饮料,手离开则停止出饮料。

 

代码:

#define button_delay 5            //单按钮消除抖动延时
#define button_every_delay 50      //多按钮操作间隔
 
//io高低点吧状态标志位,0代表低电平,1代表高电平
bool io_flag[3]={0,0,0};
 
//按钮变化标志位,0代表无变化,1代表有变化
bool button_flag[3]={0,0,0};
 
int i;

long time_last=0;

void anjian_jiance(){
  for(i=2;i<=4;i++)
  {
    if(digitalRead(i)==HIGH)
    {
      delay(button_delay);
      if(digitalRead(i)==HIGH)
        {
          if(io_flag[i-2]==0)
            {
              io_flag[i-2]=1;
              delay(button_every_delay);
            }
        }
    }
    
    if(digitalRead(i)==LOW)
    {
      delay(button_delay);
      if(digitalRead(i)==LOW)
        {
          if(io_flag[i-2]==1)
            {
              io_flag[i-2]=0;
              //print_s();      //按钮松开,打印消息
              delay(button_every_delay);
            }
        }
    }
  }
}

bool hongwai_jiance(){
  if(digitalRead(11)==true)
  {
    delay(button_delay);
    if(digitalRead(11)==true)
    return true;
    else
    return false;
  }
  else
  return false;
}
//5 6 9接红绿蓝
//全彩二极管呼吸灯
void led_light(){
  Serial.println("Led lighting!");
for(int i=0;i<=255;i++)
{
  analogWrite(5,255);
  analogWrite(6,map(i,0,255,204,0));
  analogWrite(9,map(i,0,255,226,0));
  delay(4);
}
for(int i=0;i<=255;i++)
{
  analogWrite(5,map(i,0,255,255,175));
  analogWrite(6,map(i,0,255,0,18));
  analogWrite(9,map(i,0,255,0,88));
  delay(4);
}
Serial.println("Led lighted!");
  
}


void bengshui(){
  Serial.println("Out watering");
  while(hongwai_jiance())
  {
    if(io_flag[0])
    {
      digitalWrite(7,HIGH);
    }
    if(io_flag[1])
    {
      digitalWrite(8,HIGH);
    }
    if(io_flag[2])
    {
      digitalWrite(10,HIGH);
    }
    delay(50);
  }
  Serial.println("Out watered!");
  digitalWrite(7,LOW);
  digitalWrite(8,LOW);
  digitalWrite(10,LOW);
}

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  //2到4为3个按钮
  for(i=2;i<=4;i++)
    pinMode(i,INPUT);
  
    //5 6 9为三个控制全彩led的引脚,7,8,10为控制3个水泵的引脚
  for(i=5;i<=10;i++)
  {
    pinMode(i,OUTPUT);
    digitalWrite(i,LOW);
  }
//11号口为检测红外感应引脚
  pinMode(11,INPUT);
  
  Serial.println("Init succ");
}
 
void loop() {
  // put your main code here, to run repeatedly:
 anjian_jiance();
 if(io_flag[0]||io_flag[1]||io_flag[2])
 {
  Serial.print("key 1 :");
  Serial.print(io_flag[0]);
  Serial.print("*********key 2 :");
  Serial.print(io_flag[1]);
  Serial.print("*********key 3 :");
  Serial.println(io_flag[2]);
  time_last=millis();
  while(!hongwai_jiance()){
    if((millis()-time_last)>5000)
    {
      Serial.println("5 seconed tiem out!");
      return;
    }
      
  }
  led_light();
  bengshui();
  
 }
 else
 return;
 
}

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Allen953

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值