本文仅为入门实验,甚至谈不上研究的程度。目的是:记录如何烧录程序到 Arduino 主板,以及通过一些简单例程,找到 Arduino 开发的感觉。
开发环境:Ardunio IDE(用于编译、上传运行代码)、VS Code 这种实时的文本编辑器(方便查看、编写代码,编写后再将代码复制到 Arduino IDE 中保存)。
Arduino 驱动:在 Win10 环境,应该会自动安装。插上 Arduino 稍后一会,就能直接上传代码。
1、Hello World例程:
打开 Arduino IDE,另存临时工程。用 VS Code 编辑 ino 源文件:
int ledpin = 13; //定义数字接口13,对应 Arduino 数字 I/O 13口,库中的 LED_BUILTIN 常量
void setup()
{
// 通过串口收发数据
Serialbegin(9600); //设置串口的波特率
pinMode(ledpin, OUTPUT); //设置13口为输出模式。使用 Arduino 上面的 I/O 口,都需要类似设置
}
void loop()
{
// int val = Serialread(); //读取 pc 发送给 Arduino 的数据
digitalWrite(ledpin, HIGH); //13口输出高电平
delay(500); //延迟05秒
digitalWrite(ledpin, LOW); //13口输出低电平
delay(500);
Serialprintln("Hello World");
}
编写好保存后,用 Arduino IDE 上传代码后,只要 Arduino 通电,代码就会在主板上运行了。
最后打开 Arduino IDE 的串口工具,即可看到 Arduino 不断发送的数据;随便用个小灯泡,阴极接地,阳极接13口,可以看到小灯泡正在 Blink。
2、使用模拟接口,读取模拟值:
Arduino 有 A0-A5,共6个模拟口,模拟口也可以复用为数字接口14-19。至于是当作模拟口,还是用作数字接口,取决于使用 digital 还是 analog 函数。
例程:
int potpin = 0;
int val = 0;
void setup()
{
// 通过串口收发数据
Serialbegin(9600); //设置串口的波特率
}
void loop()
{
val = analogRead(potpin);
Serialprintln(val);
delay(2000);
}
电路图如下(其中 R2 为可变电阻)。通过可调电阻改变电流大小,从而改变 A0 的模拟值,读取并输出串口。
没看到你的硬件图,简单说下思路
图像转换为数组(矩阵),这个单片机困难的话可以在PC上做。
单片机有个左右震动传感器,判断是否挥动到头,然后开始顺序显示数组的列。(如果是扇形挥动,转换时先做矫正。)
看灯带是全彩灯带,单是否支持按每个灯独立显示就未知了。
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin 13 as an output
pinMode(13, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
好吧,你另开一贴~~~~
我来告诉你把~~
1、led不能用13,13不支持调光,用11
2、if (state == 1){
readValue = analogRead(A0); //
这不是重新读取了电位器的值吗?当然与上次保存的没有关系了。
好的,以下是一个基于TTP223和WS2812的触摸效果灯的示例代码,实现了长按调节亮度、双击开关灯的效果:
```
#include <Adafruit_NeoPixelh>
#define PIN_PIXEL 5 // WS2812控制引脚
#define NUM_PIXELS 30 // 灯珠数量
#define PIN_TOUCH 2 // TTP223触摸模块控制引脚
// WS2812对象
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUM_PIXELS, PIN_PIXEL, NEO_GRB + NEO_KHZ800);
// 亮度调节变量
int brightness = 255;
int step = 10;
// 开关灯标志
bool isOn = true;
// 触摸模块状态变量
bool isPressed = false;
unsigned long pressTime = 0;
unsigned long releaseTime = 0;
void setup() {
pixelsbegin();
pinMode(PIN_TOUCH, INPUT_PULLUP);
}
void loop() {
// 判断触摸模块状态
bool touchState = digitalRead(PIN_TOUCH);
if (touchState != isPressed) {
isPressed = touchState;
if (isPressed) {
pressTime = millis();
} else {
releaseTime = millis();
if (releaseTime - pressTime < 1000) { // 按下时间不足1秒算单击
if (isOn) {
pixelsclear(); // 灭灯
pixelsshow();
isOn = false;
} else {
pixelsfill(pixelsColor(brightness, brightness, brightness)); // 亮灯
pixelsshow();
isOn = true;
}
}
}
}
// 长按调节亮度
if (isPressed && (millis() - pressTime > 1000)) {
if (releaseTime == 0 || (millis() - releaseTime > 500)) { // 避免多次触发
brightness += step;
if (brightness > 255) {
brightness = 255;
step = -step;
} else if (brightness < 0) {
brightness = 0;
step = -step;
}
pixelssetBrightness(brightness);
pixelsshow();
releaseTime = millis();
}
}
}
```
代码说明:
1 定义了WS2812控制引脚、灯珠数量、TTP223触摸模块控制引脚等常量。
2 在setup()函数中初始化WS2812对象和触摸模块引脚。
3 在loop()函数中不断检测触摸模块状态。如果触摸模块状态发生改变,根据按下时间判断是单击还是长按。如果是单击,则切换灯的开关状态。如果是长按,则根据按压时间调节灯的亮度。
4 灯的亮度调节使用了一个变量brightness和一个变量step,brightness表示当前亮度,step表示亮度调节步长,每次长按时根据step加减brightness,当brightness超出范围时翻转step的方向。
5 双击开关灯的效果实现比较简单,直接通过判断isOn变量的值来控制灯的开关即可。
需要注意的是,这只是一个简单的示例代码,可能还有很多需要改进的地方,比如对按键按下的抖动进行滤波、对亮度调节的步长进行优化等。
麻烦给我反馈是否解决了你的问题,谢谢你,我很希望能够给你提供服务
以上就是关于arduino怎么设置小灯泡来回亮全部的内容,包括:arduino怎么设置小灯泡来回亮、用arduino编程流水灯程序、Arduino怎么写个最简单的程序,软件我有,写一个灯泡亮的就行了。还有板怎么接,看图,一秒亮一下等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)