- 2024-12-11
-
回复了主题帖:
任务审核通过名单&返现通知|得捷 Follow me 第二季第1期活动
哇哦,感谢感谢
- 2024-09-27
-
加入了学习《【Follow me第二季第1期】任务提交》,观看 【Follow me第二季第1期】任务提交
- 2024-09-01
-
发表了主题帖:
【Follow me第二季第1期】任务提交
本帖最后由 bitter 于 2024-9-27 21:48 编辑
【Follow me第二季第1期】任务提交
很高兴能够参加本期由得捷电子和eeworld社区共同举办得本次【Follow me第二季第1期】活动,想想前前后后也参加过好几次follow me活动了,这次应该是第三次了,还是很感谢得捷电子和eeworld社区提供的机会,期待后续活动再能出现一些有意思的板子~
由于最近比较忙,收到板子后也是拖了比较长的时间直到最后几天才开始相关的活动,时间比较匆忙,完成的不是很好,希望各位审核大大能够手下留情、高抬贵手。
物料清单
我购买物料为活动必备物料开发板、推荐物料舵机、排针,还有一个传感器适配器,还以为是传感器本身,到手一看才发生是一个适配器。
物料展示
项目视频演示
【Follow me第二季第1期】任务提交-【Follow me第二季第1期】任务提交-EEWORLD大学堂
入门任务:开发环境搭建,板载LED点亮
按照Arduino | Adafruit Circuit Playground Express | Adafruit Learning System里的教程一步一步搭建arduino开发环境,并点亮板载LED。
官网下载IDE,https://www.arduino.cc/en/software
安装完成后,打开IDE,点击Tools->Board->Boards Manager,安装Arduino SAMD
安装完成后输入示例代码,使用MicroUSB 线连接开发板,选择对应得端口,点击upload即可烧录程序,观察到如下输出即代表烧录成功。
烧录成功后,重启开发板可以看到开发板上得红灯开始闪烁。
// 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
}
演示图片:
软件流程图:
基础任务一:控制板载炫彩LED,跑马灯点亮和颜色变换
在本次任务中,我们使用到了Mini NeoPixel LED,需要借助Adafruit NeoPixel Library这个库。下载完成后,点击->Sketch->Include Library->Add .ZIP Library…,将对应得库文件导入即可。
#include <Adafruit_NeoPixel.h>
#define PIN 8
// 定义按钮引脚
#define BUTTON_COLOR 4 // 调节亮度
Adafruit_NeoPixel strip = Adafruit_NeoPixel(10, PIN, NEO_GRB + NEO_KHZ400);
int currentColor = 0;
int brightness = 50;
void setup() {
pinMode(BUTTON_COLOR, INPUT); // 设置按钮
strip.begin();
strip.setBrightness(brightness);
strip.show();
}
void loop() {
// 检查按钮状态
checkButtons();
// 执行当前效果
switch (currentColor) {
case 0:
colorWipe(strip.Color(255, 0, 0), 50);
break;
case 1:
colorWipe(strip.Color(0, 255, 0), 50);
break;
case 2:
colorWipe(strip.Color(0, 0, 255), 50);
break;
case 3:
colorWipe(strip.Color(0, 0, 0, 255), 50);
break;
}
}
bool checkButtons() {
bool buttonPressed = false;
static int lastButtonState = LOW;
int buttonState = digitalRead(BUTTON_COLOR);
if (buttonState == HIGH && lastButtonState == LOW) {
delay(50);
if (buttonState == HIGH && lastButtonState == LOW)
{
currentColor = (currentColor + 1)%4;
buttonPressed = true;
}
}
lastButtonState = buttonState;
return buttonPressed;
}
void colorWipe(uint32_t c, uint8_t wait) {
for (uint16_t i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, c);
strip.show();
if (checkButtons()) return; // 如果按钮被按下,则中断循环
}
}
该程序主要是实现了每按一次按钮后,彩色LED在红、绿、蓝和灭四种状态转换。
演示图片:
软件流程图:
基础任务二:监测环境温度和光线,通过板载LED展示舒适程度
在本次任务中,我们除了需要使用上一个任务使用得Mini NeoPixel LED,还额外需要使用温度传感器和光传感器,需要借助Adafruit_CircuitPlayground这个库。安装方式按上一个任务将对应得库文件添加即可。
#include <Adafruit_CircuitPlayground.h>
void setup() {
CircuitPlayground.begin();
Serial.begin(921600);
}
void loop() {
displayTemperature();
delay(250);
displayBrightness();
delay(250);
}
void displayTemperature() {
uint8_t ledCount;
float temperature = CircuitPlayground.temperature();
uint32_t color;
Serial.println("current temperature is");
Serial.println(temperature);
ledCount= (int)temperature/5;
color = CircuitPlayground.colorWheel((11-ledCount)*25);
for (int i = 0; i < 10; i++) {
if (i < ledCount) {
CircuitPlayground.setPixelColor(9 - i, color);
} else {
CircuitPlayground.setPixelColor(9 - i, 0); // 关闭LED
}
}
}
void displayBrightness() {
uint16_t brightness = CircuitPlayground.lightSensor();
uint8_t overallBrightness = map(brightness, 0, 500, 0, 100);
Serial.println("current brightness is");
Serial.println(brightness);
CircuitPlayground.setBrightness(overallBrightness); //调整所有灯珠亮度
}
该程序将通过串口实时输出当前的温度和环境亮度。根据当前温度将会实时点亮不同个数的LED并显示不同颜色;根据当前的环境亮度将会调整所有LED的亮度。
演示图片:
软件流程图:
基础任务三:接近检测——设定安全距离并通过板载LED展示,检测到入侵时,发起声音报警
在本次任务中,使用了Mini NeoPixel LED、红外发射器和接收器,还有蜂鸣器。
#include <Adafruit_CircuitPlayground.h>
#define SAFE_DISTANCE 450
const int alertTone = 1000;
const int irTransmitterPin = 25;
const int irReceiverPin = A10;
void setup() {
CircuitPlayground.begin();
Serial.begin(921600);
pinMode(irReceiverPin, INPUT);
pinMode(irTransmitterPin, OUTPUT);
}
void loop() {
sendIRPulse();
int distance = analogRead(irReceiverPin);
displayDistance(distance);
checkForIntrusion(distance);
delay(300);
}
void displayDistance(int distance) {
int ledCount = map(distance, 290, SAFE_DISTANCE, 1, 10);
uint32_t color;
Serial.print("Distance: ");
Serial.print(distance);
Serial.print(", LED Count: ");
Serial.println(ledCount);
color = CircuitPlayground.colorWheel((11-ledCount)*25);
for (int i = 0; i < 10; i++) {
if (i < ledCount) {
CircuitPlayground.setPixelColor(i, color);
} else {
CircuitPlayground.setPixelColor(i, 0);
}
}
}
void checkForIntrusion(int distance) {
if (distance > SAFE_DISTANCE) {
Serial.println("Intrusion detected!");
playAlertTone();
}
}
void sendIRPulse() {
for (int i = 0; i < 32; i++) {
digitalWrite(irTransmitterPin, HIGH);
delayMicroseconds(13);
digitalWrite(irTransmitterPin, LOW);
delayMicroseconds(13);
}
}
void playAlertTone() {
CircuitPlayground.playTone(alertTone, 1000);
}
在靠近的过程中将逐渐点亮不同个数的LED并显示不同颜色,超过安全范围时蜂鸣器将会发出警告。
演示图片:
软件流程图:
进阶任务:制作不倒翁——展示不倒翁运动过程中的不同灯光效果
由于条件有限,没办法制作相应的不倒翁,所以我实际上是用板载陀螺仪检测板子的姿态,然后给出对应的灯光效果:即往哪边倾斜就点亮哪一边的LED,水平则全部点亮。
#include <Adafruit_CircuitPlayground.h>
#include <math.h>
void setup() {
CircuitPlayground.begin();
Serial.begin(921600);
}
void loop() {
float x = CircuitPlayground.motionX();
float y = CircuitPlayground.motionY();
float z = CircuitPlayground.motionZ();
int ledToLight = -1;
Serial.print("X: ");
Serial.print(x);
Serial.print(" - Y: ");
Serial.print(y);
Serial.print(" - Z: ");
Serial.print(z);
z -= 9.8;
if(abs(x)<2 && abs(y)<2 && abs(z)<2)
ledToLight = -1;
else if(y<-2 && abs(x)<2)
ledToLight = 0;
else if(y<-2 && x>2)
ledToLight = 1;
else if(x>2 && abs(y)<2)
ledToLight = 2;
else if(x>2 && y>2)
ledToLight = 3;
else if(y>2 && abs(x)<2)
ledToLight = 4;
else if(y>2 && x<-2)
ledToLight = 6;
else if(x<-2 && abs(y)<2)
ledToLight = 7;
else if(x<-2 && y<-2)
ledToLight = 8;
uint8_t color= map( ledToLight, 0, 9, 0, 255);
if (ledToLight == -1) {
for (int i = 0; i < 10; i++) {
CircuitPlayground.setPixelColor(i, CircuitPlayground.colorWheel(85)); //水平时都点亮
}
} else {
for (int i = 0; i < 10; i++) {
if (i == ledToLight || (ledToLight == 4 && i == 5) || (ledToLight == 0 && i == 9)) {
CircuitPlayground.setPixelColor(i, CircuitPlayground.colorWheel(color));//点亮对应位置的
} else {
CircuitPlayground.setPixelColor(i, 0);
}
}
}
Serial.print(" - LED To Light: ");
Serial.println(ledToLight);
delay(100);
}
演示图片:
软件流程图:
创意任务二:章鱼哥——章鱼哥的触角根据环境声音的大小,章鱼哥的触角可舒展或者收缩
由于时间和外部条件的限制,没有制作章鱼模型。本次任务是使用麦克风识别环境音量,根据环境音量的大小点亮不同个数的LED并显示不同颜色。除此之外,根据环境音量的变化逆时针或顺时针旋转舵机。
#include <Adafruit_CircuitPlayground.h>
#include <Servo.h>
float SoundLevel,lastsoundLevel;
// 舵机定义
const int servoPin = A3; // 舵机连接的引脚
Servo myServo;
int Speed=90;
void setup() {
CircuitPlayground.begin();
Serial.begin(921600);
myServo.attach(servoPin);
myServo.write(Speed);
}
void loop() {
uint32_t color;
int ledCount;
float soundLevel = CircuitPlayground.mic.soundPressureLevel(10);
ledCount = map(soundLevel, 50, 100, 0, 10);
color = CircuitPlayground.colorWheel((11-ledCount)*25);
Serial.print("Raw Sound Level: ");
Serial.println(soundLevel);
for (int i = 0; i < 10; i++) {
if (i < ledCount) {
CircuitPlayground.setPixelColor(i, color);
} else {
CircuitPlayground.setPixelColor(i, 0);
}
}
if(fabs((lastsoundLevel-soundLevel))>1)
{
static uint8_t i=0;
if(i++ % 2)
Speed -= (int)(lastsoundLevel-soundLevel);
else
Speed += (int)(lastsoundLevel-soundLevel);
}
else
Speed = 90;
lastsoundLevel = soundLevel;
myServo.write(Speed);
Serial.print("Speed:");
Serial.println(Speed);
delay(200);
}
演示图片:
软件流程图:
项目总结
总的来说,由于时间匆忙,没有很深入的了解这款开发板,但是即使是在有限的条件下也了解了这块板子的多样性和强大功能。第一次使用Arduino,也学会了很多。
最后,感谢得捷电子和eeworld社区提供的机会,期待后续活动!
-
加入了学习《Follow me第二季第一期 任务演示》,观看 Follow me第二季第一期 任务演示
-
加入了学习《Follow me第二季第1期》,观看 创意任务二:章鱼哥
-
加入了学习《FollowMe 第二季: 1 Adafruit Circuit Playground Express及任务讲解》,观看 Adafruit Circuit Playground Express 及任务讲解
- 2024-08-31
-
加入了学习《【Follow me第二季第1期】全部任务演示》,观看 全部任务演示2.0
-
加入了学习《【Follow me第二季第1期】任务提交-使用makecode开发(JavaScript)》,观看 【Follow me第二季第1期】任务提交-使用makecode开发(JavaScript)
- 2024-08-29
-
加入了学习《【Follow me第二季第1期】视频展示》,观看 得捷电子Follow me第二季第期视频展示
- 2024-04-17
-
加入了学习《泰克MSO6B探索营:应用案例深度解析》,观看 通用串行总线USB技术演进及测试方案
- 2024-03-14
-
回复了主题帖:
【Luckfox幸狐 RV1103】——文件传输+SDK 环境部署
Jacktang 发表于 2024-3-14 07:34
文件传输+SDK 环境部署
之后下面准备怎么整
网友们都说内置的NOR FLASH 太小了,所以下一步打算使用SD卡烧录,连接摄像头,跑一下RKNN推理测试
- 2024-03-12
-
发表了主题帖:
【Luckfox幸狐 RV1103】——文件传输+SDK 环境部署
一、文件传输
Win +R 在 Windows 地址栏输入 \\172.32.0.93,用户名为 root,密码为 luckfox。
拖动文件到想要存放的目录,完成传输。
二、SDK 环境部署
首先安装依赖环境。
sudo apt update
sudo apt-get install -y git ssh make gcc gcc-multilib g++-multilib module-assistant expect g++ gawk texinfo libssl-dev bison flex fakeroot cmake unzip gperf autoconf device-tree-compiler libncurses5-dev pkg-config bc python-is-python3 passwd openssl openssh-server openssh-client vim file cpio rsync
获取最新的 SDK。
git clone https://gitee.com/LuckfoxTECH/luckfox-pico.git
在luckfox-pico根目录,输入
./build.sh
按照对应的硬件选择,即可进行编译。
-
发表了主题帖:
【Luckfox幸狐 RV1103】——ADB 登录+串口登录
ADB 登录
下载 ADB 安装包, 右键我的电脑属性—>高级系统设置—>环境变量,
系统变量—>编辑—>将adb解压路径新建进去。
登录之前配置 RNDIS 虚拟网口,可以参考之前的文章。
使用adb connect 172.32.0.93命令连接 Luckfox Pico 。
使用adb devices命令查看 ADB 设备。
使用adb -s 172.32.0.93:5555 shell命令登录到开发板。
串口登录
根据原理图,将UART2_TX和UART2_RX与串口调试工具连接,使用串口调试助手连接。
打开串口调试助手,选择对应测串口,设置串口的波特率波特率为115200。
点击OK,按下回车,输入登录名:root 和登录密码:luckfox 就可以登陆了。
- 2024-03-04
-
加入了学习《泰克MSO6B探索营》,观看 如何完成AI芯片电源噪声测试
-
加入了学习《泰克MSO6B探索营》,观看 MSO6B系列低噪声演示
-
加入了学习《泰克MSO6B探索营》,观看 MSO6B-360度介绍
-
加入了学习《泰克MSO6B探索营》,观看 工程师说走就走的旅行
- 2024-02-25
-
回复了主题帖:
【得捷电子Follow me第4期】扩展U8G2移植支持LCD显示
厉害厉害,学习了
-
加入了学习《 【得捷电子Follow me第4期】》,观看 【得捷Follow me第4期】入门任务:开发环境搭建
-
加入了学习《【得捷Follow me第4期】项目总结》,观看 【得捷Follow me第4期】项目总结