Ninjia's Ledong and Scratch Robot

Ledong Scratch Robot 高中通用技术 简易机器人

安装scratch官方版的 连接传感器的方式。

连接温度传感器

通过夹子连接电阻型传感器

Red Scratch Sensor Board

已有 2 条评论

加班啦
焊接测试,一切顺利!

red scratch sensor board

red scratch sensor board

红色的Scratch Sensor Board
板子到了。

红色Scratch Sensor Board

红色Scratch Sensor Board

黄色阻焊,第一批做了8块。

黄色阻焊,相当漂亮。


等了漫长的16天的时间,今天终于拿到板子了,相当的漂亮!

好久没有更新啦,根据之前做的scratch sensor board板,给用户试用后,提出的修改意见,重新制做了电路板。下面放出几张新电路板的截图。

大图2

全图2

全图

Ledong手把手入门系列教程之十八

虚拟混色器

©版权归imtcn.com和Ledong所有,转载请保持本文完整性,并注明出处

这是《Ledong手把手入门系列教程》的第十八课,这一课我们将利用Ledong板实现一个虚拟混色器。

1、简介

本实验中,可以使用Ledong板上的串口写入功能向电脑发送多个值。通过3个电位计获得模拟值,分别用来设置红绿蓝三种颜色,这种颜色将作为程序的背景色显示在计算机上。

实验所需器材:

名    称 数量
Ledong板 1套
100KΩ电位计 3个
面包板 1块
导线 若干

根据图18-1的方法连接电路,将三个电位器外侧针脚分别连接在【5V 】和【GND】上,中间针脚接至模拟针脚【A0】至【A2】 。

 

图18-1 连接示意图

2、示例代码

将Ledong用线缆连接到PC上,打开软件程序,并设置好后,将下列代码输入到软件中,通过编译下载命令,将程序下载到Ledong中。

 

/*虚拟混色器*/

int redPin = 0;    //红色分量

int greenPin = 1;  //绿色分量

int bluePin = 2;   //蓝色分量

void setup()

{

  Serial.begin(9600);

}

void loop()

{

  Serial.print(“R”);

  Serial.println(analogRead(redPin));

  Serial.print(“G”);

  Serial.println(analogRead(greenPin));

  Serial.print(“B”);

  Serial.println(analogRead(bluePin));

  delay(100);

}

另外,还需配合使用processing软件,运行以下程序:

 

/* 虚拟混色器 在processing中运行的程序 */

import processing.serial.*;

String buff = “”;

int rval = 0, gval = 0, bval = 0;

int NEWLINE = 10;

Serial port;

void setup()

{ size(200, 200);

  println(“Available serial ports:”);

  println(Serial.list());

  port = new Serial(this, Serial.list()[0], 9600);

}

void draw()

{ while (port.available() > 0) {

    serialEvent(port.read());

  }

  background(rval, gval, bval);

}

void serialEvent(int serial)

{ if(serial != NEWLINE){

    buff += char(serial);

  }

  else{

    char c = buff.charAt(0);

    buff = buff.substring(1);

    buff = buff.substring(0, buff.length()-1);  

    if (c == ‘R’)

      rval = Integer.parseInt(buff);

    else if (c == ‘G’)

      gval = Integer.parseInt(buff);

    else if (c == ‘B’)

      bval = Integer.parseInt(buff);     

    buff = “”;

  }

}

 程序下载后,按运行键。可以观察到,processing软件会弹出一个对话框,当改变3个电位计的值,对话框中的背景色也将随着改变。 

3、运行效果

Ledong手把手入门系列教程之十八.虚拟混色器的运行效果图18-2如下: 

 

 

图18-2 运行效果图 

4、购买及培训

本例套件可以通过下面的方式购买:

www.imtcn.com

5、电路图

Ledong手把手入门系列教程之十八.虚拟混色器的原理图18-3如下:

 

图18-3 原理图

Ledong手把手入门系列教程之十八.虚拟混色器的PCB布线图18-4如下:

 

图18-4 pcb布线图

6、错误处理

本实验导线连接比较复杂,注意认真检查电路的连线是否与简介中描述的一致。每个电位计有3个引脚,位于两端的引脚要分别连接电源和地。

7、补充说明

8、参考文献

http://www.imtcn.com

http://fritzing.org/projects/virtual-color-mixer/

Ledong手把手入门系列教程之十六

数字温度计

©版权归imtcn.com和Ledong所有,转载请保持本文完整性,并注明出处

这是《Ledong手把手入门系列教程》的第十六课,这一课我们将利用Ledong板测量和显示温度。

1、简介

本实验通过温度传感器读取数据,并将其显示在LCD屏幕上。需要用的元件如下表,其中10KΩ电位计用于调节液晶显示器的亮度和对比度。

实验所需器材:

名    称 数量
Ledong板 1套
LCD 1个
DS18B20温度传感器 1个
74HC595芯片 1片
4.7KΩ电阻 3个
10KΩ电位计 1个
面包板 2块
导线 若干

根据图16-1的方法连接电路:

 

图16-1 连接示意图

2、示例代码

将Ledong用线缆连接到PC上,打开软件程序,并设置好后,将下列代码输入到软件中,通过编译下载命令,将程序下载到Ledong中。此外,还需根据代码的要求,拷贝DallasTemperature文件夹与OneWire文件夹至Ledong安装路径下的libraries文件夹中。

#include <LCD3Wire.h>

#include <OneWire.h>

#include <DallasTemperature.h>

#define LCD_LINES 2 

#define DOUT_PIN  7

#define STR_PIN   6 

#define CLK_PIN   5 

#define ONE_WIRE_BUS 12

OneWire oneWire(ONE_WIRE_BUS);

DallasTemperature sensors(&oneWire);

LCD3Wire lcd = LCD3Wire(LCD_LINES, DOUT_PIN, STR_PIN, CLK_PIN);

char * floatToString(char * outstr, float value, int places, int minwidth, bool rightjustify);

void setup(void) {

    lcd.init();

    sensors.begin();

}

void loop(void) {

  float temp;

  char buff[10];

  sensors.requestTemperatures();

   temp = sensors.getTempCByIndex(0);

   lcd.cursorTo(2,0);

   lcd.printIn(floatToString(buff,temp,3,0,false));

   lcd.print(0xDF);

   lcd.print(‘C’);

}

char * floatToString(char * outstr, float value, int places, int minwidth, bool rightjustify) {

    int digit;

    float tens = 0.1;

    int tenscount = 0;

    int i;

    float tempfloat = value;

    int c = 0;

    int charcount = 1;

    int extra = 0;

    float d = 0.5;

    if (value < 0)

        d *= -1.0;

    for (i = 0; i < places; i++)

        d/= 10.0;   

    tempfloat +=  d;

    if (value < 0)

        tempfloat *= -1.0;

    while ((tens * 10.0) <= tempfloat) {

        tens *= 10.0;

        tenscount += 1;

    }

    if (tenscount > 0)

        charcount += tenscount;

    else

        charcount += 1;

    if (value < 0)

        charcount += 1;

    charcount += 1 + places;

    minwidth += 1;

    if (minwidth > charcount){       

        extra = minwidth – charcount;

        charcount = minwidth;

    }

    if (extra > 0 and rightjustify) {

        for (int i = 0; i< extra; i++) {

            outstr[c++] = ‘ ‘;

        }

    }

    if (value < 0)

        outstr[c++] = ‘-’;

    if (tenscount == 0)

        outstr[c++] = ’0′;

    for (i=0; i< tenscount; i++) {

        digit = (int) (tempfloat/tens);

        itoa(digit, &outstr[c++], 10);

        tempfloat = tempfloat – ((float)digit * tens);

        tens /= 10.0;

    }

    if (places > 0)

    outstr[c++] = ‘.’;

    for (i = 0; i < places; i++) {

        tempfloat *= 10.0;

        digit = (int) tempfloat;

        itoa(digit, &outstr[c++], 10);

        // once written, subtract off that digit

        tempfloat = tempfloat – (float) digit;

    }

    if (extra > 0 and not rightjustify) {

        for (int i = 0; i< extra; i++) {

            outstr[c++] = ‘ ‘;

        }

    }

    outstr[c++] = ‘\0′;

    return outstr;

}

程序下载后,按运行键。可以观察到,液晶显示器将会显示外界的温度。

3、运行效果

Ledong手把手入门系列教程之十六.数字温度计的运行效果图16-2如下:

 

图16-2 运行效果图

4、购买及培训

本例套件可以通过下面的方式购买:

www.imtcn.com

5、电路图

Ledong手把手入门系列教程之十六.数字温度计的原理图16-3如下:

 

图16-3 原理图

Ledong手把手入门系列教程之十六.数字温度计的PCB布线图16-4如下:

 

图16-4 pcb布线图

6、错误处理

本实验导线连接比较复杂,注意认真检查电路的连线是否与简介中描述的一致,尤其是74HC595芯片的连线。

7、补充说明

8、参考文献

http://www.imtcn.com

http://fritzing.org/projects/digital-thermometer/

Ledong手把手入门系列教程之十五

温度显示器

©版权归imtcn.com和Ledong所有,转载请保持本文完整性,并注明出处

这是《Ledong手把手入门系列教程》的第十五课,这一课我们将利用Ledong板和液晶显示屏实现一个温度显示器。

1、简介

本实验通过液晶显示器上的数字来显示外界的当前温度。当热敏电阻无法工作时,液晶显示器也会给出指示。

实验所需器材:

名    称 数量
Ledong板 1套
LCD 1个
10KΩ热敏电阻NTC 3D-15 1个
10KΩ电阻 1个
10KΩ电位计 1个
面包板 1块
导线 若干

根据图15-1的方法连接电路:

 

图15-1 连接示意图

2、示例代码

将Ledong用线缆连接到PC上,打开软件程序,并设置好后,将下列代码输入到软件中,通过编译下载命令,将程序下载到Ledong中。此外,还需根据代码的要求,拷贝LCD3Wire文件夹至Ledong安装路径下的libraries文件夹中。

 

 /* 温度显示器 */

 #include <LiquidCrystal.h>

 //初始化

 LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

 #include <math.h>

 double Thermister(int RawADC) {

 double Temp;

 Temp = log(((10240000/RawADC) – 10000));

 Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * Temp * Temp * Temp));

 Temp = Temp – 273.15;   //温度单位制转换

 return Temp;

 }

 void setup() {

   //设置LCD的行列

   lcd.begin(16, 2);

   //在LCD上显示信息

 }

 void loop() { 

   lcd.clear();//LCD清屏

   lcd.setCursor(0,0);

   lcd.print(“current temp. “);

   lcd.setCursor(0,1);

   lcd.print(int(Thermister(analogRead(0))));

   lcd.print(” deg.C”);

 delay(1000);

 }

程序下载后,按运行键。可以观察到,液晶显示器将会显示外界的当前温度。

3、运行效果

Ledong手把手入门系列教程之十五.温度显示器的运行效果图15-2如下:

 

图15-2 运行效果图

4、购买及培训

本例套件可以通过下面的方式购买:

www.imtcn.com

5、电路图

Ledong手把手入门系列教程之十五.温度显示器的原理图15-3如下:

 

图15-3 原理图

Ledong手把手入门系列教程之十五.温度显示器的PCB布线图15-4如下:

 

图15-4 pcb布线图

6、错误处理

本实验导线连接比较复杂,注意认真检查电路的连线是否与简介中描述的一致,尤其是液晶显示器LCD的连线。此外,需适当调节电位计的值,使LCD的亮度适中,能正常显示出文字。

7、补充说明

8、参考文献

http://www.imtcn.com

http://fritzing.org/projects/thermistor-output-to-lcd/

Ledong手把手入门系列教程之十四

光强指示器

©版权归imtcn.com和Ledong所有,转载请保持本文完整性,并注明出处

这是《Ledong手把手入门系列教程》的第十四课,这一课我们将利用Ledong板实现一个光强指示器。

1、简介

本实验中的电路可应用于机动车上的光强指示保护器。该保护器的实现只需要配有一个7段数码管的就可以简单实现了。电路包括一个模拟输入和一个光敏电阻。为了使显示变暗,用光敏电阻来检测周围的光强。

实验所需器材:

名    称 数量
Ledong板 1套
7段数码管 1个
光敏电阻 1个
62Ω电阻 7个
150Ω电阻 1个
1MΩ电阻 1个
面包板 1块
导线 若干

根据图14-1的方法连接电路:

 

图14-1 连接示意图

2、示例代码

将Ledong用线缆连接到PC上,打开软件程序,并设置好后,将下列代码输入到软件中,通过编译下载命令,将程序下载到Ledong中。本实验的代码正在更新中,需访问以下网址获取:

http://fritzing.org/projects/gear-indicator/

程序下载后,按运行键。可以观察到,当外界光强变小时,指示器显示的数字会变小。

3、运行效果

Ledong手把手入门系列教程之十四.光强指示器的运行效果图14-2如下:

 

图14-2 运行效果图

4、购买及培训

本例套件可以通过下面的方式购买:

www.imtcn.com

5、电路图

Ledong手把手入门系列教程之十四.光强指示器的原理图14-3如下:

 

图14-3 原理图

Ledong手把手入门系列教程之十四.光强指示器的PCB布线图14-4如下:

 

图14-4 pcb布线图

6、错误处理

本实验导线连接比较复杂,注意认真检查电路的连线是否与简介中描述的一致。

7、补充说明

7段LED数码管是利用7个LED外加一个小数点的LED组合而成的显示设备,可以显示0~9等10个数字和小数点,使用非常广泛,其示意图如右图所示。

这类数码管分为共阳极和共阴极两种,共阳极就是把LED的阳极连接到共节点com,而每个LED的阴极分别为a、b、c、d、e、f、g及dp;共阴极则是把所有LED的阴极连接到共同节点com,而每个LED的阳极分别为a、b、c、d、e、f、g及dp。

8、参考文献

http://www.imtcn.com

http://fritzing.org/projects/gear-indicator/

©版权归imtcn.com和Ledong所有,转载请保持本文完整性,并注明出处

这是《Ledong手把手入门系列教程》的第十三课,在这一课我们将利用一个压电式扬声器用来捕获敲击的声音。

1、简介

压电式扬声器是一种既可以用来播放声音,又可以用来检测声音的电子设备。在这课中,使用一个无源蜂鸣器用来捕获敲击的声音,然后通过串口给电脑发送回一个“knock!”,最后使用Ledong串口监视来查看这些文字。

实验所需器材:

名    称 数量
Ledong板 1套
1MΩ电阻 1个
无源蜂鸣器 1个
面包板 1块
导线 若干

根据图13-1的方法连接电路,将压电式扬声器的红线连接到Ledong的模拟口【A4】,黑线连接到【GND】,再将一个约1M的电阻与压电式蜂鸣器并联。最后运行程序来分析模拟输入值。

 

图13-1 连接示意图

2、示例代码

将Ledong用线缆连接到PC上,打开软件程序,并设置好后,将下列代码输入到软件中,通过编译下载命令,将程序下载到Ledong中。

/* 敲击检测 */

int ledPin = 13;     

int knockSensor = 0;

byte val = 0;        

int statePin = LOW; 

int THRESHOLD = 100;        // 用于决定是否有敲击的阈值

void setup() {

 pinMode(ledPin, OUTPUT);    // 声明输出端

 Serial.begin(9600);            // 使用串口

}

void loop() {

  val = analogRead(knockSensor);   

  if (val >= THRESHOLD) {

    statePin = !statePin;         

    digitalWrite(ledPin, statePin);

    Serial.println(“Knock!”);     

  }

  delay(100); 

}

程序下载后,按运行键。可以观察到,当敲击压电式蜂鸣器时,电路板上的【D13】处的LED灯会闪烁,且闪烁频率会随着敲击的快慢改变:敲得越快,LED闪烁得越快。

3、运行效果

Ledong手把手入门系列教程之十三.敲击检测的运行效果图13-2(a)如下:

 

图13-2(a) 运行效果图

运行成功后,选择Ledong的软件界面上的“串口监视”,这时将会弹出一个对话框。当发生一次敲击时,对话框中就会出现一个“Knock!”,效果如图13-2(b)所示:

 

图13-2(b) 运行效果图

4、购买及培训

本例套件可以通过下面的方式购买:

www.imtcn.com

5、电路图

Ledong手把手入门系列教程之十三.敲击检测的原理图13-3如下:

 

图13-3 原理图

Ledong手把手入门系列教程之十三.敲击检测的PCB布线图13-4如下:

 

图13-4 pcb布线图

6、错误处理

认真检查电路的连线是否与简介中描述的一致,尤其是压电式蜂鸣器的正负管脚注意不要接反了。

7、补充说明

本实验采用的蜂鸣器为压电式,只需要将其正负管脚直接连入电路即可。如果使用一般的蜂鸣器,则需要配合使用一个放大电路,见下图:

8、参考文献

http://www.imtcn.com

http://fritzing.org/projects/knock/


Warning: Unknown: open(/var/chroot/home/content/i/m/t/imtcnadmin/tmp/sess_f10d75f839fc4d87351c5a62fd34b6d6, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct () in Unknown on line 0