#信息物理实践01

第一节课任务要求:

任务一:使开发板上与 IO0 连接的红灯闪烁,亮 2 秒灭 3 秒,循环执行

任务二:使用 Blinker 按钮遥控开发板上与 IO2 连接的蓝灯的亮灭

任务三:使用 Blinker 色彩控制遥控气氛灯的颜色

任务四:使用 Blinker 文本输入框遥控显示屏上的显示输出

任务五:使用 Blinker 显示室内温湿度

任务六:使用显示屏显示室内温湿度,温湿度分别在显示屏的两行上显示,显示 格式为“HUMI:湿度值”、“TEMP:温度值”,湿度值和温度值分别显示到小数点后 两位。同时,可以在 Blinker 上显示室内温湿度

任务七:使用 Blinker 滑条遥控舵机旋转到某个角度

任务八:使用 Blinker 滑条遥控舵机和风扇同时动作

任务九:不使用 Blinker,使得舵机和风扇同时动作,舵机正转时,与 IO0 连接的 红灯长亮,与 IO2 连接的蓝灯熄灭,表示舵机正转;舵机反转时,与 IO2 连接的 蓝灯长亮,与 IO0 连接的红灯熄灭,表示舵机反转

 

ArduinoIDE编程环境搭建必备

  1. 安装Arduino:跟教程走就可以
  2. 下载并安装 8266 扩展库(用于 esp8266 开发板编程)(老师给的):
    双击 8266_package_2.7.4.exe,安装 esp8266 扩展库。如果安装过其他版本的 esp8266 SDK,请先删除,再使用本安装包。
    删除方法:电脑文件管理器地址栏输入%LOCALAPPDATA%/Arduino15/packages,回车进入,然后删除掉其中的 esp8266 文件夹。
    安装完成后,再打开 Arduino IDE,即可在菜单栏→工具→开发板→ESP8266 Boards(2.7.4)中选择 Generic ESP8266 Module 开发板
  3. 下载并安装 blinker 库文件(用于 blinker 手机 app 连接通信)
    blinker 安装包下载链接地址:https://github.com/blinker-iot/blinker-library。
    Windows 系统:将下载好的 blinker-library-master 库文件拷贝到C:\Users\lenovo\Documents\Arduino\libraries文件夹中。
  4. 安装 YwRobot 开发板硬件驱动
    将 YwRobot 开发板通过 Micro USB 线连接至电脑,连接好后开发板上的蓝色 PWR 灯常亮。
    在第一次使用 YwRobot 开发板时,电脑会自动给 YwRobot 开发板安装驱动(使用的驱动芯片为 CH340)。安装完成后在电脑设备管理器中查看驱动是否安装成功。
    安装成功后会有显示驱动对应的通信串口号。 如果因电脑原因导致驱动安装不上,就需要手动安装驱动。下载 CH340 驱动程序后 (老师给的),以管理员身份运行 SETUP.EXE 文件即可。
    然后重新拔插下 YwRobot 开发板,直到在设备管理器中成功看到对应的 CH340 的驱动以及后面的 COM 口。
    COM 端口号每台电脑不同,通常是除 1 和 2 以外的数字。
    在Arduino IDE,菜单栏→工具→端口中选择COM口。
  5. 手机下载 blinker APP
    Android 系统下载:应用市场中搜索“blinker”下载。(据同学说没找到)
    IOS 系统下载:App Store 中搜索“blinker”下载。
    下载完成后注册一个账号就可以使用 blinker 对外开放的功能。

     

实验例程

1.使开发板上与 IO0 连接的红灯闪烁,亮 2 秒灭 3 秒,循环执行

int led = 0;//define led control pin

void setup() {
  // put your setup code here, to run once:
pinMode(led, OUTPUT);//output mode
}

void loop() {
  digitalWrite(led, LOW);//点亮LED
  delay(2000);// delay 2000ms
  digitalWrite(led, HIGH);//熄灭LED
  delay(3000);// delay 1000ms
  // put your main code here, to run repeatedly:

}

2.使用 Blinker 按钮遥控开发板上与 IO2 连接的蓝灯的亮灭

记得修改工具-Builtin Led


#define BLINKER_WIFI

#include <Blinker.h>

char auth[] = "";
char ssid[] = "";
char pswd[] = "";

// 新建组件对象
BlinkerButton Button1("btn-abc");
BlinkerNumber Number1("num-abc");

int counter = 0;

// 按下按键即会执行该函数
void button1_callback(const String & state)
{
    BLINKER_LOG("get button state: ", state);
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}

// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);
    counter++;
    Number1.print(counter);
}

void setup()
{
    // 初始化串口
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);
    BLINKER_DEBUG.debugAll();
    
    // 初始化有LED的IO
    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, HIGH);
    // 初始化blinker
    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);

    Button1.attach(button1_callback);
}

void loop() {
    Blinker.run();
}

如果设备显示离线可以断开WiFi

 

3.使用 Blinker 色彩控制遥控气氛灯的颜色

APP设置:

#信息物理实践01

这里要注意数据键名是否匹配,partner因为把K打成k所以一直没成功

开发板连接:

#信息物理实践01



#define BLINKER_WIFI
#include <Blinker.h>

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif

#define PIN            13
#define NUMPIXELS      9

char auth[] = "";
char ssid[] = "";
char pswd[] = "";

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

BlinkerButton Button1("btn-abc");
#define RGB_1 "RGBKey"
BlinkerRGB WS2812(RGB_1);

void ws2812_callback(uint8_t r_value, uint8_t g_value, uint8_t b_value, uint8_t bright_value)
{
    BLINKER_LOG("R value: ", r_value);
    BLINKER_LOG("G value: ", g_value);
    BLINKER_LOG("B value: ", b_value);
    BLINKER_LOG("Rrightness value: ", bright_value);

    pixels.setBrightness(bright_value);

    for(int i = 0; i < NUMPIXELS; i++){
        pixels.setPixelColor(i, r_value, g_value, b_value);
    }
    pixels.show();
}

void button1_callback(const String & state)
{
    BLINKER_LOG("get button state: ", state);
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}


void setup()
{
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);

    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, HIGH);

    Blinker.begin(auth, ssid, pswd);
    Button1.attach(button1_callback);
    pixels.begin();
    WS2812.attach(ws2812_callback);
   
}

void loop()
{
    Blinker.run();
}

 

上一篇:ATK-esp8266加arduino nano


下一篇:2021CCPC重赛 1005 Monopoly