×

简单的录制和播放开源分享

消耗积分:0 | 格式:zip | 大小:0.13 MB | 2022-11-07

符筹荣

分享资料个

描述

该项目允许您“记录”感官输入并将其存储以备后用。信息存储在 EEPROM 而不是动态存储器中,因此即使在电路板关闭时也可以记住它(就像一个微型硬盘驱动器)。

材料:

  • Arduino - 
  • 面包板 -
  • 跳线 -
  • 按钮 - 
  • LED - 
  • 电阻器(用于 LED) - 
  • 10k 电位器 -
  • 伺服电机 - 

作为一名亚马逊合作伙伴,我从符合条件的购买中赚取收入。

第 1 步:制作电路

 

 
poYBAGNocviAMayjAAD1Hp_lysg081.png
示意图
 

根据上图制作电路:

  • 电位器到引脚 A0
  • 按钮到 D2
  • 伺服到针 D3
  • 导致引脚 D13

在这里查看电路模拟

第 2 步:上传代码

将此代码上传到您的 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),直到你再次按下按钮来记录新的动作。您还可以通过更改 和 的值来改变记录的时间resolutionrecordTime

笔记

这段代码在 Arduino 上使用了大量的 EEPROM 内存,因此有一些解决方案:

  • 您可以一次只记录一个位置,而不是“流畅”的录音,让它更加“跳跃”。只需将伺服器移动到新位置并按下按钮即可。这样做,直到你拥有所有你想要的职位。
  • 存储在 PROGMEM(程序存储器)而不是 EEPROM
  • 如果您不需要在断电期间保存信息,请使用常规整数数组而不是 EEPROM。
  • 写入外部存储,例如 microSD 卡

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !