该项目允许您“记录”感官输入并将其存储以备后用。信息存储在 EEPROM 而不是动态存储器中,因此即使在电路板关闭时也可以记住它(就像一个微型硬盘驱动器)。
材料:
作为一名亚马逊合作伙伴,我从符合条件的购买中赚取收入。
根据上图制作电路:
在这里查看电路模拟!
将此代码上传到您的 Arduino(无需额外的库安装):
#include
#include //used to store recorded values
Servo myServo;
float resolution = 1000;//MUST be less than EEPROM.length()
float recordTime = 5; //delay time
bool recording = false;
void setup() {
pinMode(13, OUTPUT); //status led
pinMode(2, OUTPUT);
myServo.attach(3);
Serial.begin(9600);
digitalWrite(2, HIGH);
//Serial.println(EEPROM.length());
}
void loop() {
if (recording == true) {//record
for (int i = 1; i <= resolution; i++) {
digitalWrite(13, HIGH); //light status led
int val = map(analogRead(A0), 0, 1023, 0, 180);
EEPROM.write(i, val);
//Serial.println(EEPROM.read(i));
myServo.write(val);
delay(recordTime);
}
digitalWrite(13, LOW); //turn off status led
delay(1000);//give time for person
recording = false;
}
else {
for (int i = 1; i <= resolution; i++) {//playback
if (digitalRead(2) == 0) {//stop playback and record new values
recording = true;
break;
}
int readval = EEPROM.read(i);
myServo.write(readval);
//Serial.println(readval);
delay(recordTime);
}
digitalWrite(13, HIGH); //show a new repeat
delay(100);
digitalWrite(13, LOW);
}
}
注意说的评论//MUST be less than EEPROM.length()
要查找您的板的 EEPROM 存储的大小,取消注释//Serial.println(EEPROM.read(i));
这将在串行监视器中打印 EEPROM 的大小,您可以相应地更改注释变量的值。
要使用该电路,您只需按下按钮开始记录并通过电位器输入所需的信息。现在,板子会无休止地重复你的动作(每次迭代都会闪烁一个 LED),直到你再次按下按钮来记录新的动作。您还可以通过更改 和 的值来改变记录的时间resolution
量recordTime
。
这段代码在 Arduino 上使用了大量的 EEPROM 内存,因此有一些解决方案:
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !