本帖最后由 az158 于 2018-11-20 20:34 编辑
原文:Arduino Paper Controller (Buttons + Slider)
该项目允许你绘制自己的控制器以用于任何地方。它利用电容感应和石墨的导电性的原理。
在这个项目中使用的东西
Arduino UNO & Genuino UNO | ×1 | 鳄鱼夹 | ×1 | 面包板 | ×1 | 公/母跳线 | ×1 | 电阻10M欧姆 | ×3 | 电阻330欧姆 | ×2 |
在我的网站上查看这个项目!
该项目允许你绘制自己的控制器以用于任何地方。它利用电容式传感和石墨的导电特性,将数据发送到Arduino板。
物料- 鳄鱼夹
- Arduino
- 面包板
- 跳线
- 10M欧姆电阻(x3)
- 铅笔
- 纸
- 伺服电机
- LED(x2)
- LED电阻器(通常为220欧姆)(x2)
第1步:绘制控制器
绘制控制器
你真的要在一张纸上画出你的控制器: - 一定要用铅笔(石墨是导电的)
- 制作一些按钮,可以是一两个滑块。
- 一定要画一条通向纸张边缘的线,为鳄鱼夹提供空间
- 尽可能涂黑
第2步:制作电路
测试滑块
电路原理图
我忘了画两个led的限流电阻(假装它们在地和led阳极之间)。右边的三个黑框代笔通向纸张的鳄鱼夹。(最上面那个是滑块,另外两个是按钮。)
第3步:安装库该项目的代码需要一个用于电容式传感的库。在这里下载:https://playground.arduino.cc/Main/CapacitiveSensor?from=Main.CapSense 根据该库的Arduino页面说明,“电容式传感器库将两个或更多Arduino引脚模拟为电容传感器,可以感应人体的电容。所有传感器都需要一个中到高值的电阻器和一段电线和一小块(大)铝箔片。在调节到最敏感的情况下,传感器可以感应距离传感器一英寸远的手或身体”。
第4步:上传代码- #include <Servo.h>
- #include <CapacitiveSensor.h>
- Servo myservo;
- CapacitiveSensor button1 = CapacitiveSensor(4, 2);
- CapacitiveSensor button2 = CapacitiveSensor(4, 3);
- CapacitiveSensor slider = CapacitiveSensor(4, 5);
- int total1val = 1000;//you'll need to edit these
- int total2val = 1000;
- int total3val1 = 100;
- int total3val2 = 1000;
- void setup() {
- //button1.set_CS_AutocaL_Millis(0xFFFFFFFF);
- Serial.begin(9600);
- pinMode(10, OUTPUT);
- pinMode(13, OUTPUT);
- myservo.attach(6);
- }
- void loop() {
- long start = millis();
- long total1 = button1.capacitiveSensor(1000);
- long total2 = button2.capacitiveSensor(1000);
- long total = 0;
- long total3 = 0;
- for (int i = 1; i <= 10; i++) {//averages the value for the slide to make the servo smoother
- total3 = slider.capacitiveSensor(10000);
- total = total + total3;
- delay(1);
- }
- long avg = total / 10;
- int angle;
- Serial.print(millis() - start);
- Serial.print("\t");
- Serial.print(avg);
- Serial.print("\t");
- Serial.print(total2);
- Serial.print("\t");
- Serial.println(total3);
- if (total1 > total1val) {
- digitalWrite(13, HIGH);
- }
- else {
- digitalWrite(13, LOW);
- }
- if (total2 > total2val) {
- digitalWrite(10, HIGH);
- }
- else {
- digitalWrite(10, LOW);
- }
- angle = map(avg, total3val1, total3val2, 180, 0);
- myservo.write(angle);
- delay(10);
- }
复制代码
你可能需要修改带有“//you'll need to edit these”注释的语句,来调整有关的值: - 打开串口监视器用来观察值
- 看看“低”和“高”的值(当你接触或者不接触按钮时)
- 调整代码中的值,直到一切正常(当按下按钮时LED应该打开,伺服电机应该按滑块状态转动)
原理图
代码
code.zip
(682 Bytes, 下载次数: 4)
|