极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14646|回复: 5

求大神帮忙看看

[复制链接]
发表于 2015-12-14 18:48:58 | 显示全部楼层 |阅读模式
目前能实现按下A0口的按钮(这个按钮为总开始键),2秒之后,开启运用74HC595来实现的类似跑马灯效果的灯(这个灯时长一分钟),同时,随机数也开始运行,范围为1到9之间,串口数字显示1代表继电器1开启,数字2代表继电器2开启,以此类推。那么问题来了,我想再加8个按钮,来控制继电器的关,由于for,我加在哪里都不能实现关闭,但又必须要这个for,因为所有东西都要在这个跑马灯的一分钟时间里才能运行,求大神帮忙写加入详细代码。



#define KEY A0

int Relay1 = 10;
int Relay2 = 2;
int Relay3 = 3;
int Relay4 = 4;
int Relay5 = 5;
int Relay6 = 6;
int Relay7 = 7;
int Relay8 = 8;

int latchPin = 13;
int clockPin = 12;
int dataPin = 11;

int KEY_NUM = 0;

long randNumber;

void setup ()
{
  Serial.begin(9600);
  pinMode(latchPin,OUTPUT);digitalWrite(latchPin,HIGH);
  pinMode(clockPin,OUTPUT);digitalWrite(clockPin,HIGH);
  pinMode(dataPin,OUTPUT);digitalWrite(dataPin,HIGH);
  pinMode(KEY,INPUT_PULLUP);
  pinMode(Relay1,OUTPUT);digitalWrite(Relay1,LOW);
  pinMode(Relay2,OUTPUT);digitalWrite(Relay2,LOW);
  pinMode(Relay3,OUTPUT);digitalWrite(Relay3,LOW);
  pinMode(Relay4,OUTPUT);digitalWrite(Relay4,LOW);
  pinMode(Relay5,OUTPUT);digitalWrite(Relay5,LOW);
  pinMode(Relay6,OUTPUT);digitalWrite(Relay6,LOW);
  pinMode(Relay7,OUTPUT);digitalWrite(Relay7,LOW);
  pinMode(Relay8,OUTPUT);digitalWrite(Relay8,LOW);
  randomSeed(analogRead(0));
}
void loop()
{
  int n =digitalRead(A0);
  if(n==0)
  {
    delay(2000);
  for(int a=0; a<256; a++)
  
  {
    digitalWrite(latchPin,LOW);
    shiftOut(dataPin,clockPin,MSBFIRST,a);
    digitalWrite(latchPin,HIGH);
  
  
  randNumber = random(1,9);
  Serial.println(randNumber);

  
  
  if(randNumber==1 ){
digitalWrite(Relay1,HIGH);
}

  if(randNumber==2 ){
digitalWrite(Relay2,HIGH);
}

  if(randNumber==3 ){
digitalWrite(Relay3,HIGH);
}

  if(randNumber==4 ){
digitalWrite(Relay4,HIGH);
}

  if(randNumber==5 ){
digitalWrite(Relay5,HIGH);
}

  if(randNumber==6 ){
digitalWrite(Relay6,HIGH);
}

  if(randNumber==7 ){
digitalWrite(Relay7,HIGH);
}

  if(randNumber==8 ){
digitalWrite(Relay8,HIGH);

delay(230);
}
  
}
}
回复

使用道具 举报

 楼主| 发表于 2015-12-14 21:43:02 来自手机 | 显示全部楼层
论坛就没有肯帮忙的嘛。。。。
回复 支持 反对

使用道具 举报

发表于 2015-12-14 23:06:18 | 显示全部楼层
delay 函数占用了CPU。用millis() 的方式替换延时试试。
回复 支持 反对

使用道具 举报

发表于 2015-12-14 23:29:08 | 显示全部楼层
gthrtg 发表于 2015-12-14 21:43
论坛就没有肯帮忙的嘛。。。。

原來回你的帖也不行, 你要人怎樣幫?
http://www.geek-workshop.com/for ... mp;page=1#pid113894
跟你說了, 你又不去想, 想幫也幫不了.
沒救了...放棄.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-15 08:50:57 | 显示全部楼层
Super169 发表于 2015-12-14 23:29
原來回你的帖也不行, 你要人怎樣幫?
http://www.geek-workshop.com/forum.php?mod=viewthread&tid=25393 ...

就是因为不会啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-15 09:54:56 | 显示全部楼层
帕米 发表于 2015-12-14 23:06
delay 函数占用了CPU。用millis() 的方式替换延时试试。

unsigned long time 这个time定义哪个量啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 19:56 , Processed in 0.070376 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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