az158 发表于 2018-11-20 19:29:51

【翻译】Arduino纸张控制器(按钮+滑块)

本帖最后由 az158 于 2018-11-20 20:34 编辑

原文:Arduino Paper Controller (Buttons + Slider)
该项目允许你绘制自己的控制器以用于任何地方。它利用电容感应和石墨的导电性的原理。
在这个项目中使用的东西

硬件部分

Arduino UNO & Genuino UNO ×1
鳄鱼夹 ×1
面包板 ×1
公/母跳线 ×1
电阻10M欧姆 ×3
电阻330欧姆 ×2

软件应用程序和在线服务

Arduino IDE

在我的网站上查看这个项目!
该项目允许你绘制自己的控制器以用于任何地方。它利用电容式传感和石墨的导电特性,将数据发送到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应该打开,伺服电机应该按滑块状态转动)

原理图
代码

feixiang20 发表于 2019-1-7 16:36:00

看看了
页: [1]
查看完整版本: 【翻译】Arduino纸张控制器(按钮+滑块)