2019-10-11 18:09:49 gunion 阅读数 69
  • 少儿编程:Scratch中的Arduino开发

    本门课程将介绍如何以Scratch的编程方式进行Arduino开发(需购买硬件,详情可以参考教程内容)。 课程包含16个小模块的调用,并以案例形式发散思维,对应生活中随处可见的场景。(如红绿灯、楼道声控开灯,火焰报警、电动车碰撞报警、触摸传感器开启灯/风扇、高温开启风扇、天黑打开路灯,厕所冲水设备等) 每节正式课程包含连接硬件和代码编写两个环节,如果是孩子学习,请家长做好监督看护工作。 我相信,编程对孩子的思维培养和好奇心的激发是确实存在益处的,希望每一个观众能够有所收获。 课程适合人群:对编程感兴趣的青少年;有意培养子女编程兴趣的家长;有意从事少儿编程相关工作的朋友。

    1071 人正在学习 去看看 王全

纪念一下这颜值报表的红外对管

发射端

  • 串接100Ω-150Ω电阻

接收端

  • 串接4*680kΩ电阻

图1图2

2019-11-19 14:51:46 weixin_41659040 阅读数 114
  • 少儿编程:Scratch中的Arduino开发

    本门课程将介绍如何以Scratch的编程方式进行Arduino开发(需购买硬件,详情可以参考教程内容)。 课程包含16个小模块的调用,并以案例形式发散思维,对应生活中随处可见的场景。(如红绿灯、楼道声控开灯,火焰报警、电动车碰撞报警、触摸传感器开启灯/风扇、高温开启风扇、天黑打开路灯,厕所冲水设备等) 每节正式课程包含连接硬件和代码编写两个环节,如果是孩子学习,请家长做好监督看护工作。 我相信,编程对孩子的思维培养和好奇心的激发是确实存在益处的,希望每一个观众能够有所收获。 课程适合人群:对编程感兴趣的青少年;有意培养子女编程兴趣的家长;有意从事少儿编程相关工作的朋友。

    1071 人正在学习 去看看 王全

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试做实验,不管成功与否,都会记录下来---小小的进步或是搞不定的问题,希望能够抛砖引玉。 

 

【Arduino】168种传感器模块系列实验(资料+代码+图形编程+仿真编程)

实验四十一:IS0203激光接收管传感器模块

 

IS0203激光接收管

400-1100nm激光接收管,内置施密特电路

产品名称:激光接收管(激光照射时输出电压)
产品型号:IS0203-GY
工作电压:4.5-17V
封装尺寸:4.6*4.6mm(长*宽)
后端引脚长:14.8mm
光谱范围:400--1100nm
中心波长:900nm
接收距离:0-200米(激光功率越大 接收距离越远)
应用领域如下

IS0203激光接收管传感器模块(非调制管)

模块参数

宝贝尺寸:1.52CM*2.22CM;

供电电压:5V;

输出:

有激光照射时输出高电平:

无激光照射时输出低电平;

本传感器采用非调制的激光接收头,请在室内无光的地方使用,阳光或其他灯具会干扰,建议在阴暗环境使用。

实验接线
Arduino Uno         激光管发射模块
Pin 2                        S(信号引脚)
5V                              +
GND                           -

Arduino Uno        激光接收模块
Pin 3                       OUT
5V                           VCC
GND                       GND

/*

【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)

实验四十一:IS0203激光接收管传感器模块(非调制管)

*/

 

int LED = 13;                             //定义LED引脚为13(即板子上的LED灯)

int LaserSensor = 2;                      //定义激光接收模块信号引脚为2

int SensorReading = HIGH;                 //定义激光接收模块信号引脚为高电平

int Laser = 12;                           //定义激光发射模块信号引脚为12

 

void setup() {

  // put your setup code here, to run once:

  pinMode(LED, OUTPUT);                   //定义LED为输出模式

  pinMode(Laser, OUTPUT);                 //定义Laser为输出模式

  pinMode(LaserSensor, INPUT);            //定于LaserSensor为输入模式

}

 

void loop() {

  // put your main code here, to run repeatedly:

  digitalWrite(Laser, HIGH);             //给Laser高电平,激光发射模式发射激光

  delay(200);                            //延时200毫秒

  

  SensorReading = digitalRead(LaserSensor);  //读取LaserSensor(激光接收模块信号引脚)的当前状态

  if(SensorReading == LOW)                   //如果等于电平

  {

    digitalWrite(LED, HIGH);                      //则灯亮(发射与接收之间有东西挡住)

    

  }

  else

  {

    digitalWrite(LED, LOW);                      //否则灯灭(发射与接收之间没有障碍物)

  }

}

实验中,不小心烧毁了接收管,要等重新掏个管子再继续本实验........

 

2017-02-27 12:54:57 ling3ye 阅读数 11368
  • 少儿编程:Scratch中的Arduino开发

    本门课程将介绍如何以Scratch的编程方式进行Arduino开发(需购买硬件,详情可以参考教程内容)。 课程包含16个小模块的调用,并以案例形式发散思维,对应生活中随处可见的场景。(如红绿灯、楼道声控开灯,火焰报警、电动车碰撞报警、触摸传感器开启灯/风扇、高温开启风扇、天黑打开路灯,厕所冲水设备等) 每节正式课程包含连接硬件和代码编写两个环节,如果是孩子学习,请家长做好监督看护工作。 我相信,编程对孩子的思维培养和好奇心的激发是确实存在益处的,希望每一个观众能够有所收获。 课程适合人群:对编程感兴趣的青少年;有意培养子女编程兴趣的家长;有意从事少儿编程相关工作的朋友。

    1071 人正在学习 去看看 王全

欢迎关注「凌顺实验室」微信公众号

 

 

 

 

 

激光管发射模块   &    激光接收模块

 

 

实验效果

 

BOM表

Arduino Uno   *1

激光管发射模块    *1

激光接收模块       *1

面包板

跳线若干

 

接线

Arduino Uno     <------>   激光管发射模块

Pin 12                <------>       S(信号引脚)

5V                       <------>        +

GND                   <------>        -

 

 

Arduino Uno     <------>   激光接收模块

Pin 2                  <------>      OUT

5V                       <------>      VCC

GND                   <------>      GND

 

 

 

 

开源代码

 

int LED = 13;                             //定义LED引脚为13(即板子上的LED灯)
int LaserSensor = 2;                      //定义激光接收模块信号引脚为2
int SensorReading = HIGH;                 //定义激光接收模块信号引脚为高电平
int Laser = 12;                           //定义激光发射模块信号引脚为12

void setup() {
  // put your setup code here, to run once:
  pinMode(LED, OUTPUT);                   //定义LED为输出模式
  pinMode(Laser, OUTPUT);                 //定义Laser为输出模式
  pinMode(LaserSensor, INPUT);            //定于LaserSensor为输入模式
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(Laser, HIGH);             //给Laser高电平,激光发射模式发射激光
  delay(200);                            //延时200毫秒
  
  SensorReading = digitalRead(LaserSensor);  //读取LaserSensor(激光接收模块信号引脚)的当前状态
  if(SensorReading == LOW)                   //如果等于电平
  {
    digitalWrite(LED, HIGH);                      //则灯亮(发射与接收之间有东西挡住)
    
  }
  else
  {
    digitalWrite(LED, LOW);                      //否则灯灭(发射与接收之间没有障碍物)
  }
}

 

 

 

 

 

2015-07-24 17:13:04 neil89 阅读数 8178
  • 少儿编程:Scratch中的Arduino开发

    本门课程将介绍如何以Scratch的编程方式进行Arduino开发(需购买硬件,详情可以参考教程内容)。 课程包含16个小模块的调用,并以案例形式发散思维,对应生活中随处可见的场景。(如红绿灯、楼道声控开灯,火焰报警、电动车碰撞报警、触摸传感器开启灯/风扇、高温开启风扇、天黑打开路灯,厕所冲水设备等) 每节正式课程包含连接硬件和代码编写两个环节,如果是孩子学习,请家长做好监督看护工作。 我相信,编程对孩子的思维培养和好奇心的激发是确实存在益处的,希望每一个观众能够有所收获。 课程适合人群:对编程感兴趣的青少年;有意培养子女编程兴趣的家长;有意从事少儿编程相关工作的朋友。

    1071 人正在学习 去看看 王全

硬件:Arduino uno板、红外遥控器、红外接收三极管、舵机、杜绑线; 

端口:红外接收管VOUT脚接11,舵机信号接9;

效果:随机按红外遥控器1~9之间数字,对就舵机旋转20、40、60、80、100、120、140、160、180度; 

代码:

//接收红外信息,解码获取对应数字,控制舵机旋转对应角度。

#include <IRremote.h>//红外库
int RECV_PIN = 11; //红外接收VOUT引脚定义
int SERVOPIN = 9; //舵机驱动引脚定义
int myangle;//定义角度变量
int pulsewidth;//定义脉宽变量

//编码示例遥控数字1~9代表舵机20-180角度
long d20 = 0x00ff30CF;
long d40 = 0x00FF18E7;
long d60 = 0x00FF7A85;
long d80 = 0x00FF10EF;
long d100 = 0x00FF38C7;
long d120 = 0x00FF5AA5;
long d140 = 0x00FF42BD;
long d160 = 0x00FF4AB5;
long d180 = 0x00FF52AD;
IRrecv irrecv(RECV_PIN);
decode_results results;//结构声明

void setup() {
  // put your setup code here, to run once:
  pinMode(RECV_PIN, INPUT); //红外VOUT端口模式,输入
  pinMode(SERVOPIN, OUTPUT); //舵机端口模式,输出
  Serial.begin(9600);//波特率9600
  irrecv.enableIRIn();//开启红外接收
  Serial.println("system is read now!");
}

int on = 0;
unsigned long last = millis();

void loop() {
  // put your main code here, to run repeatedly:
  if (irrecv.decode(&results)) {
    if (millis() - last > 250) {
      on = !on;
      digitalWrite(13, on ? HIGH : LOW);
      dump(&results);
    }
    if (results.value == d20) {
      Serial.println("20 degree");
      startRun(20);
    }
    if (results.value == d40) {
      Serial.println("40 degree");
      startRun(40);
    }

    if (results.value == d60)
    {
      Serial.println("60 degree");
      startRun(60);
    }
    if (results.value == d80)
    {
      Serial.println("80 degree");
      startRun(80);
    }
    if (results.value == d100)
    {
      Serial.println("100 degree");
      startRun(100);
    }
    if (results.value == d120)
    {
      Serial.println("120 degree");
      startRun(120);
    }
    if (results.value == d140)
    {
      Serial.println("140 degree");
      startRun(140);
    }
    if (results.value == d160)
    {
      Serial.println("160 degree");
      startRun(160);
    }
    if (results.value == d180)
    {
      Serial.println("180 degree");
      startRun(180);
    }
    last = millis();
    irrecv.resume();
  }
}

void dump(decode_results *results)
{
  int count = results->rawlen;
  if (results->decode_type == UNKNOWN) {
    Serial.println("Could not decode message");
  }
  else
  {
    if (results->decode_type == NEC) {
      Serial.print("Decoded NEC: ");
    }
    else if (results->decode_type == SONY) {
      Serial.print("Decoded SONY: ");
    }
    else if (results->decode_type == RC5) {
      Serial.print("Decoded RC5: ");
    }
    else if (results->decode_type == RC6) {
      Serial.print("Decoded RC6: ");
    }
    Serial.print(results->value, HEX);
    Serial.print(" (");
    Serial.print(results->bits, DEC);
    Serial.println(" bits)");
  }
  Serial.print("Raw (");
  Serial.print(count, DEC);
  Serial.print("): ");

  for (int i = 0; i < count; i++)
  {
    if ((i % 2) == 1) {
      Serial.print(results->rawbuf[i]*USECPERTICK, DEC);
    }
    else {
      Serial.print(-(int)results->rawbuf[i]*USECPERTICK, DEC);
    }
    Serial.print(" ");
  }
  Serial.println("");
}

void servopulse(int servopin, int myangle) /*定义一个脉冲函数,用来模拟方式产生PWM值*/
{
  pulsewidth = (myangle * 11) + 500; //将角度转化为500-2480 的脉宽值
  digitalWrite(SERVOPIN, HIGH); //将舵机接口电平置高
  delayMicroseconds(pulsewidth);//延时脉宽值的微秒数
  digitalWrite(SERVOPIN, LOW); //将舵机接口电平置低
  delay(20 - pulsewidth / 1000); //延时周期内剩余时间
}

void startRun(int degree) {
  if (degree > 0 && degree <= 180) //判断收到数据值是否符合范围
  {
    //直接获取旋转角度
    Serial.print("moving servo to ");
    Serial.print(degree, DEC);
    Serial.println();
    for (int i = 0; i <= 50; i++) //产生PWM个数,等效延时以保证能转到响应角度
    {
      servopulse(SERVOPIN, degree); //模拟产生PWM
    }
  }
}

总结:基本实现预期效果,但遥控器必须对准接收管才能执行动作,如果非对准,虽然接收到信号,串口打印”Could not decode message“,还未发现原因。


2018-12-23 11:04:09 teamlet 阅读数 500
  • 少儿编程:Scratch中的Arduino开发

    本门课程将介绍如何以Scratch的编程方式进行Arduino开发(需购买硬件,详情可以参考教程内容)。 课程包含16个小模块的调用,并以案例形式发散思维,对应生活中随处可见的场景。(如红绿灯、楼道声控开灯,火焰报警、电动车碰撞报警、触摸传感器开启灯/风扇、高温开启风扇、天黑打开路灯,厕所冲水设备等) 每节正式课程包含连接硬件和代码编写两个环节,如果是孩子学习,请家长做好监督看护工作。 我相信,编程对孩子的思维培养和好奇心的激发是确实存在益处的,希望每一个观众能够有所收获。 课程适合人群:对编程感兴趣的青少年;有意培养子女编程兴趣的家长;有意从事少儿编程相关工作的朋友。

    1071 人正在学习 去看看 王全

前两天把 dfrobot arduino 翻出来玩外围设备。

一、红外接收管 remote lib

发现df提供的IRemote库版本比较低,是2012年发布的版本。

在github上找到原始项目,发现已经更新到2017年,下载更新!

 

地址在此:

https://github.com/z3t0/Arduino-IRremote

 

二、rfid 读卡模块

收到rc522的模块很长时间了,正好有闲空,把线排焊上。

 

放寒假可以和小朋友们一起玩了!  :-)

 

 

 

 

 

没有更多推荐了,返回首页