一.代码详解
①带校准的与肌电传感器相配的代码

#include <Servo.h>
Servo servo1;
int posServo1 = 0;
int sensorValue ;
int biggest_data,smallest_data;
void setup() {servo1.attach(3);Serial.begin(9600);Serial.println("start");delay(500);pinMode(13,1);//初始化13号,引脚状态为1digitalWrite(13,1);//校准for (int i = 0; i < 5000; i++){sensorValue = analogRead(A0);delay(1000);Serial.println(sensorValue);if(biggest_data<sensorValue){biggest_data=sensorValue;}if (smallest_data>sensorValue){smallest_data=sensorValue;}//以上代码可以用下面两行代码表示//(biggest_data<sensorValue)?sensorValue:biggest_data;//(smallest_data>sensorValue)?sensorValue:smallest_data;}digitalWrite(13,0);Serial.println("ok");
}void loop() {int sensorValue = analogRead(A0);float voltage = sensorValue * (12.0 / 671.0);if (voltage > 6) {int val = map(voltage, smallest_data, biggest_data, 0, 180);//映射函数 servo1.write(val);delay(20);Serial.println(voltage);}else {servo1.write(0);delay(20);}
}

②读取某个端口的值并打印

int analogPin = A3; // potentiometer wiper (middle terminal) connected to analog pin 3// outside leads to ground and +5V
int val = 0;  // variable to store the value read
void setup() {Serial.begin(9600);           //  setup serial
}void loop() {val = analogRead(analogPin);  // read the input pinSerial.println(val);          // debug valuedelay(1000);
}
void setup() {// initialize serial communication at 9600 bits per second:Serial.begin(9600);
}// the loop routine runs over and over again forever:
void loop() {// read the input on analog pin 0:int sensorValue = analogRead(A0);// Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):float voltage = sensorValue * (40.0 / 1023.0);// print out the value you read:Serial.println(voltage);
}

③串口输入舵机转动相应的角度和不同的角度

#include <Servo.h>
Servo myservo; // 创建一个伺服电机对象
//Servo myserv1;
//Servo myserv2;
//Servo myserv3;
char inByte = 0; //串口接收的数据
int angle = 0; //角度值
String temp  ;//临时字符变量,又或者说是缓存用的吧
void setup(){myservo.attach(9); //定义舵机的引脚为9,舵机只能是10,或者9引脚
Serial.begin(9600); //设置波特率
}
void loop(){while (Serial.available() > 0) //判断串口是否有数据{inByte = Serial.read();//读取数据,串口一次只能读1个字符temp += inByte;//把读到的字符存进临时变量里面缓存,//再继续判断串口还有没有数据,知道把所有数据都读取出来}if(temp !="" )//判断临时变量是否为空{angle = temp.toInt(); //把变量字符串类型转成整型Serial.println(angle);} //输出数据到串口上,以便观察temp = "" ;//请看临时变量myservo.write(angle); //控制舵机转动相应的角度。delay(2000);//延时100毫秒myservo.write(0);delay(2000);
}

④舵机来回转动

#include <Servo.h>
Servo myservo;  // 定义Servo对象来控制
int pos = 0;    // 角度存储变量
void setup() {myservo.attach(7);  // 控制线连接数字7
}
void loop() {for (pos = 0; pos <= 180; pos ++) { // 0°到180°myservo.write(pos);              // 舵机角度写入delay(5);                       // 等待转动到指定角度}for (pos = 180; pos >= 0; pos --) { // 从180°到0°myservo.write(pos);              // 舵机角度写入delay(5);                       // 等待转动到指定角度}
}

⑤与肌电传感器相配的最简单的一套代码


```c
#include <Servo.h>
Servo servo1;
void setup() {servo1.attach(3);Serial.begin(9600);}
void loop() {int sensorValue = analogRead(A0);Serial.println(sensorValue);float voltage = sensorValue * (4.5 / 660.0);//不太懂Serial.println(voltage);if (voltage > 7.5) //7.5需要自己测一下找个合适的点{int val = map(voltage, 0, 1023, 0, 180); servo1.write(val);    delay(20);    }else {servo1.write(0);delay(20);}
}

⑥输入不同舵机应该转的角度并控制相应舵机进行运动
待更。。。

arduino与肌电信号(传感器)的碰撞② 2021 7 20相关推荐

  1. Arduino压电震动传感器(二)

    Arduino压电震动传感器,前文有介绍模拟输出,用模拟输出可以检测震动的强弱. TTL电平输出 TTL电平输出可以理解为数字电平,共两种状态:高电平和低电平(即1和0).有效信号为高电平,输出控制电 ...

  2. 使用Arduino和HCSR04超声波传感器进行简单的超声波悬浮

    原文:https://circuitdigest.com/microcontroller-projects/arduino-ultrasonic-acoustic-levitation-using-h ...

  3. arduino红外热释电传感器_【Arduino】108种传感器系列实验(17)-热释电传感器模块-Arduino中文社区 - Powered by Discuz!...

    本帖最后由 eagler8 于 2019-8-24 22:13 编辑 37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器 ...

  4. 读论文-----基于单通道表面肌电信号的手势识别 Hand Gestures Recognition Based on One-Channel Surface EMG Signal

    Hand Gestures Recognition Based on One-Channel Surface EMG Signal 摘要 本文提出了一个利用OpenBCI采集两种手势信号的数据并解码信 ...

  5. matlab肌电信号平滑滤波_BCIduino 滤波和频谱计算操作

    本文介绍用 python 对航弈生物 BCIduino 放大器脑电/肌电数据进行滤波及频谱计算,介绍如何用 python mne 对 fif 格式保存的脑电数据进行读取和简单的滤波,并用numpy 对 ...

  6. 肌电信号的包络matlab程序_基于matlab的肌电信号处理程序

    基于 matlab 的肌电信号处理程序: function varargout = untitled(varargin) % UNTITLED M- untitled.fig %      UNTIT ...

  7. Arduino压电震动传感器

    Arduino压电震动传感器 读取震动传感器的模拟值,串口输出:按压震动传感器控制LED灯亮灭. 外观 接线 Arduino 震动传感器 5V 5V GND GND A0 A0 2 D0 读取模拟值时 ...

  8. 玩转Mixly – 10、Arduino AVR编程 之 传感器,执行器,通信,存储,factory

    以下内容源自Mixly官方技术文档: https://mixly.readthedocs.io/zh_CN/latest/Arduino/AVR/10Sensor.html https://mixly ...

  9. ESP32(arduino)和声音传感器数据采集并实现连接WiFi进行MQTT通信

    ESP32(arduino)和声音传感器数据采集并实现连接WiFi进行MQTT通信 简单物联网应用--基于老人居家声音监测系统 使用 WiFi 库, 创建 WiFiClient 对象, 引用 WiFi ...

  10. 肌电信号特征提取的代码

    肌电信号特征提取的代码可以使用 Python 编写.具体实现可以使用 numpy 和 scipy 库进行数据处理,使用 matplotlib 库进行数据可视化,使用 scikit-learn 库进行特 ...

最新文章

  1. 有了AD,还需要WINS吗?
  2. 禅道8.2.4 腾讯云迁移至VM
  3. 关于持续集成几点知识点
  4. 强制卸载域控制器命令
  5. CSS实现垂直居中的5种思路
  6. Java 编程的动态性,第 6 部分: 利用 Javassist 进行面向方面的更改--转载
  7. Smartform中如何设置背景阴影色(Shading)
  8. Spring Aop面向切面编程自动注入
  9. 看出每个应用程序最高可用内存是多少
  10. 看完白鹤滩水电站建造历程 感觉《流浪地球》那些真能造出来
  11. storm基础系列之二----zookeeper的作用
  12. bin文件编辑_为MediaWiki安装可视化编辑器VisualEditor
  13. linux下php安装
  14. Spring Boot制作个人博客-标签页
  15. AGV搬运机器人磁导航传感器D-MNSV7-X16安装方法与注意事项
  16. 电力电子技术(16)——直流斩波电路
  17. 【Python】PermissionError: [Errno 13] Permission denied: ‘xxx.xlsx‘问题解决
  18. Web技术基础学②——初步学习CSS
  19. 龙世界java游戏_我的世界:当Notch在6年后重回mc,会发生什么?萌新的像个弟弟...
  20. SQL优化速度,关于like

热门文章

  1. 期刊论文格式是什么样的,如何排版?
  2. 向量误差修正(VECM)模型案例分析
  3. GB/T 7714-2005《文后参考文献著录规则》(精简)
  4. PBRT v3看完了
  5. 一键查看MTALAB支持的字体
  6. 北大中文核心期刊目录(2004年版)全文
  7. Visual C++ 6.0 Processor Pack 编译xvidcore1.1.0
  8. 360度 EC11 旋转编码器模块 数字脉冲电位器
  9. 《矩阵分析与应用》(第2版)———知识+Matlab2018a——2nd
  10. wav音频文件格式解析【个人笔记】(自用)