求助大神 这个有点难-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2324|回复: 4

[未解决] 求助大神 这个有点难

[复制链接]
发表于 2021-4-2 08:58 | 显示全部楼层 |阅读模式
一)任务要求
现场搭建任务设备,现场变成完成任务。使用arduino源代码编程,主板使用uno R3 5V扩展板,uno R3开发板、超声波传感器、光敏电阻、三色LED交通信号灯、蜂鸣器、杜邦线、数据线。
   制作一个交通信号灯,当距离大于10cm时,绿色灯亮起;当距离小于10cm、大于5cm时,黄色灯亮起;当距离小于5cm时,则红色灯亮起,并发出警报声音。
根据以上器材、题目设定,程序流程图并展示作品。
二)任务要求:
现场搭建任务设备,现场变成完成任务。使用arduino源代码编程,主板使用uno R3 5V扩展板,uno R3开发板、超声波传感器、光敏电阻、三色LED交通信号灯、蜂鸣器、杜邦线、数据线。

制作智能路灯模拟系统,三个LED灯,代表路灯(只做指示,不需要摆放在固定位置),道路长度20cm,当有行人从左至右移动时,路灯1先点亮,移动到10cm处时,路灯1熄灭,路灯2点亮,移动至终点时,路灯3点亮,路灯2熄灭,人离开后5秒,路灯3熄灭。当人从右向左移动时,路灯点亮顺序相反。
根据以上器材、题目设定,程序流程图并展示作品。

材料齐全 唯缺程序

发表于 2021-4-2 12:07 | 显示全部楼层
有偿代写程序
发表于 2021-4-3 23:37 | 显示全部楼层
本帖最后由 topdog 于 2021-4-4 00:06 编辑

任务一:
[pre]long item;
#define BuzzerPin 8

void setup()
{
  item = 0;
  Serial.begin(9600);
  pinMode(3, OUTPUT);
  pinMode(4, INPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
}

void loop()
{
  item = checkdistance();
  if (item > 10) {
    digitalWrite(5, HIGH);
    digitalWrite(6, LOW);
    digitalWrite(7, LOW);

  } else if (item < 10 && item > 5) {
    digitalWrite(5, LOW);
    digitalWrite(6, HIGH);
    digitalWrite(7, LOW);
  } else if (item < 5) {
    digitalWrite(5, LOW);
    digitalWrite(6, LOW);
    digitalWrite(7, HIGH);
    tone(BuzzerPin, 1046);
  }
}

float checkdistance() {
  digitalWrite(3, LOW);
  delayMicroseconds(2);
  digitalWrite(3, HIGH);
  delayMicroseconds(10);
  digitalWrite(3, LOW);
  float distance = pulseIn(4, HIGH) / 58.00;
  delay(10);
  return distance;
}[/pre]
发表于 2021-4-4 00:02 | 显示全部楼层
本帖最后由 topdog 于 2021-4-4 11:06 编辑

任务二:
[pre]long item;
long off_time;

void setup()
{
  item = 0;
  off_time = 0;
  Serial.begin(9600);
  pinMode(3, OUTPUT);
  pinMode(4, INPUT);
  pinMode(A0,INPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
}

void loop()
{
  item = checkdistance();
  while (analogRead(A0) < 300) {
    if (item > 20) {
      digitalWrite(5,LOW);
      digitalWrite(6,LOW);
      digitalWrite(7,LOW);
    } else if (item < 20 && item > 10) {
      digitalWrite(5,HIGH);
      digitalWrite(6,LOW);
      digitalWrite(7,LOW);
    } else if (item == 10) {
      digitalWrite(5,LOW);
      digitalWrite(6,HIGH);
      digitalWrite(7,LOW);
    } else if (item < 10 && item > 0) {
      digitalWrite(5,LOW);
      digitalWrite(6,LOW);
      digitalWrite(7,HIGH);
    } else if (item == 0) {
      off_time = millis();
      if (millis() - off_time > 5000) {
        digitalWrite(7,LOW);
      }
    }
  }
}

float checkdistance() {
  digitalWrite(3, LOW);
  delayMicroseconds(2);
  digitalWrite(3, HIGH);
  delayMicroseconds(10);
  digitalWrite(3, LOW);
  float distance = pulseIn(4, HIGH) / 58.00;
  delay(10);
  return distance;
}[/pre]
发表于 2021-4-4 00:03 | 显示全部楼层
本帖最后由 topdog 于 2021-4-4 11:09 编辑

这两道题差不多的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-29 09:53 , Processed in 0.069324 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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