【pcDuino入门指南】第三章:C语言和pcDuino的Arduino风格IDE
本帖最后由 土豆变薯条 于 2013-12-11 17:49 编辑有两种风格在pcDuino上使用C语言,第一种是使用“make”命令行,另外一种是使用Arduino IDE, 该Arduino IDE已经包含在20130531发布的系统版本内。
一:Arduino风格编程程序库的工具链
源代码可以用GCC工具链进行编译,GCC已经预装在板子内。你可以在Ubuntu终端的任何目录下输入 ‘$gcc’。
注意:你可能需要通过一个桥接板和5V的arduino扩展模块连接使用。
pcDuino板子上所有的输入输出口都是3.3V的IO。
如果arduino的扩展模块需要5V的输入或者输出,就需要在pcDuino上接一块桥接板。否则,如果你直接把arduino的扩展模块连接到pcDuino上,将会损坏pcDuino板子。
二:命令行风格
pcDuino提供了一些例程来帮助用户快速入手Arduino风格编程。 这些例子为你写自己的程序提供了一个模板。
为了配合本教程的使用,pcDuino板子需要连接到网络,并且运行一个终端。
设置(一次性的):
如果是第一次使用,用如下命令安装 git:
ubuntu@ubuntu:~$ sudo apt-get install git
在你的用户目录下输入以下命令:
ubuntu@ubuntu:~$ cd
ubuntu@ubuntu:~$ pwd
/home/Ubuntu
现在通过输入以下命令来下载github上的源代码:
ubuntu@ubuntu:~$ git clone https://github.com/pcduino/c_enviroment
Cloning into ’c_enviroment’…
remote: Counting objects: 250, done.
remote: Compressing objects: 100% (166/166), done.
remote: Total 250 (delta 87), reused 232 (delta 69)
Receiving objects: 100% (250/250), 302.59 KiB | 78 KiB/s, done.
Resolving deltas: 100% (87/87), done.
下载完成后, 在你的用户目录下,会生成名为“c_enviroment”的文件夹,你可以通过输入‘ls’确认:
ubuntu@ubuntu:~$ ls
Desktop Documents Downloads Music Pictures Public Templates Videos arduino c_enviroment sa
熟悉一下目录结构:
进入c_envoroment目录:
ubuntu@ubuntu:~$ cd c_enviroment
ubuntu@ubuntu:~/c_enviroment$ ls
Makefile hardware libraries output sample
现在运行“make”来编库和例子程序,命令如下:
ubuntu@ubuntu:~/c_enviroment$ make
你可以看到一系列的编译信息:
1 make: Leaving directory `/home/ubuntu/c_enviroment/sample’
2 The resulting binary files are found in the output/test folder
3 ubuntu@ubuntu:~/c_enviroment$ cd output/test
4 ubuntu@ubuntu:~/c_enviroment/output/test$ ll
5 total 660
6 drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 27 06:59 ./
7 drwxrwxr-x 3 ubuntu ubuntu 4096 Apr 27 06:49 ../
8 -rwxrwxr-x 1 ubuntu ubuntu 13868 Apr 27 06:58 adc_test*
9 -rwxrwxr-x 1 ubuntu ubuntu 28284 Apr 27 06:58 adxl345_test*
10 -rwxrwxr-x 1 ubuntu ubuntu 14209 Apr 27 06:58 interrupt_test*
11 -rwxrwxr-x 1 ubuntu ubuntu 13726 Apr 27 06:58 io_test*
12 -rwxrwxr-x 1 ubuntu ubuntu 13712 Apr 27 06:59 linker_button_test*
13 -rwxrwxr-x 1 ubuntu ubuntu 13907 Apr 27 06:59 linker_buzzer_test*
14 -rwxrwxr-x 1 ubuntu ubuntu 13689 Apr 27 06:59 linker_hall_sensor_test*
15 -rwxrwxr-x 1 ubuntu ubuntu 13760 Apr 27 06:59 linker_joystick_test*
16 -rwxrwxr-x 1 ubuntu ubuntu 13769 Apr 27 06:59 linker_led_bar_test*
17 -rwxrwxr-x 1 ubuntu ubuntu 13690 Apr 27 06:59 linker_led_test*
18 -rwxrwxr-x 1 ubuntu ubuntu 14290 Apr 27 06:59 linker_light_sensor_test*
19 -rwxrwxr-x 1 ubuntu ubuntu 13696 Apr 27 06:59 linker_magnetic_sensor_test*
20 -rwxrwxr-x 1 ubuntu ubuntu 14175 Apr 27 06:59 linker_potentiometer_test*
21 -rwxrwxr-x 1 ubuntu ubuntu 13658 Apr 27 06:59 linker_relay_test*
22 -rwxrwxr-x 1 ubuntu ubuntu 28530 Apr 27 06:59 linker_rtc_test*
23 -rwxrwxr-x 1 ubuntu ubuntu 14136 Apr 27 06:59 linker_sound_sensor_test*
24 -rwxrwxr-x 1 ubuntu ubuntu 13832 Apr 27 06:59 linker_temperature_sensor_test*
25 -rwxrwxr-x 1 ubuntu ubuntu 13714 Apr 27 06:59 linker_tilt_test*
26 -rwxrwxr-x 1 ubuntu ubuntu 13689 Apr 27 06:59 linker_touch_sensor_test*
27 -rwxrwxr-x 1 ubuntu ubuntu 40523 Apr 27 06:58 liquidcrystal_i2c*
28 -rwxrwxr-x 1 ubuntu ubuntu 40523 Apr 27 06:58 liquidcrystal_spi*
29 -rwxrwxr-x 1 ubuntu ubuntu 38242 Apr 27 06:59 pn532_readAllMemoryBlocks*
30 -rwxrwxr-x 1 ubuntu ubuntu 38238 Apr 27 06:59 pn532readMifareMemory*
31 -rwxrwxr-x 1 ubuntu ubuntu 38240 Apr 27 06:59 pn532readMifareTargetID*
32 -rwxrwxr-x 1 ubuntu ubuntu 38263 Apr 27 06:59 pn532writeMifareMemory*
33 -rwxrwxr-x 1 ubuntu ubuntu 13842 Apr 27 06:58 pwm_test*
34 -rwxrwxr-x 1 ubuntu ubuntu 32336 Apr 27 06:58 serial_test*
35 -rwxrwxr-x 1 ubuntu ubuntu 14449 Apr 27 06:58 spi_test*
36 -rwxrwxr-x 1 ubuntu ubuntu 18822 Apr 27 06:59 tone_test*
每一个例子的源代码都在例 sample 目录下:
1 ubuntu@ubuntu:~/c_enviroment/output/test$ cd ../../sample
2 ubuntu@ubuntu:~/c_enviroment/sample$ ll
3 total 148
4 drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 27 06:49 ./
5 drwxr-xr-x 7 ubuntu ubuntu 4096 Apr 27 06:58 ../
6 -rw-rw-r– 1 ubuntu ubuntu 1368 Apr 27 06:49 Makefile
7 -rw-rw-r– 1 ubuntu ubuntu 467 Apr 27 06:49 adc_test.c
8 -rw-rw-r– 1 ubuntu ubuntu 6589 Apr 27 06:49 adx.c
9 -rw-rw-r– 1 ubuntu ubuntu 5416 Apr 27 06:49 adxl345_test.c
10 -rw-rw-r– 1 ubuntu ubuntu 92 Apr 27 06:49 core.h
11 -rw-rw-r– 1 ubuntu ubuntu 830 Apr 27 06:49 interrupt_test.c
12 -rw-rw-r– 1 ubuntu ubuntu 781 Apr 27 06:49 io_test.c
13 -rw-rw-r– 1 ubuntu ubuntu 430 Apr 27 06:49 linker_button_test.c
14 -rw-rw-r– 1 ubuntu ubuntu 1420 Apr 27 06:49 linker_buzzer_test.c
15 -rw-rw-r– 1 ubuntu ubuntu 390 Apr 27 06:49 linker_hall_sensor_test.c
16 -rw-rw-r– 1 ubuntu ubuntu 327 Apr 27 06:49 linker_joystick_test.c
17 -rw-rw-r– 1 ubuntu ubuntu 2202 Apr 27 06:49 linker_led_bar_test.c
18 -rw-rw-r– 1 ubuntu ubuntu 613 Apr 27 06:49 linker_led_test.c
19 -rw-rw-r– 1 ubuntu ubuntu 1197 Apr 27 06:49 linker_light_sensor_test.c
20 -rw-rw-r– 1 ubuntu ubuntu 404 Apr 27 06:49 linker_magnetic_sensor_test.c
21 -rw-rw-r– 1 ubuntu ubuntu 647 Apr 27 06:49 linker_potentiometer_test.c
22 -rw-rw-r– 1 ubuntu ubuntu 331 Apr 27 06:49 linker_relay_test.c
23 -rw-rw-r– 1 ubuntu ubuntu 2505 Apr 27 06:49 linker_rtc_test.c
24 -rw-rw-r– 1 ubuntu ubuntu 646 Apr 27 06:49 linker_sound_sensor_test.c
25 -rw-rw-r– 1 ubuntu ubuntu 1145 Apr 27 06:49 linker_temperature_sensor_test.c
26 -rw-rw-r– 1 ubuntu ubuntu 405 Apr 27 06:49 linker_tilt_test.c
27 -rw-rw-r– 1 ubuntu ubuntu 389 Apr 27 06:49 linker_touch_sensor_test.c
28 -rw-rw-r– 1 ubuntu ubuntu 797 Apr 27 06:49 liquidcrystal_i2c.c
29 -rw-rw-r– 1 ubuntu ubuntu 831 Apr 27 06:49 liquidcrystal_spi.c
30 -rw-rw-r– 1 ubuntu ubuntu 2002 Apr 27 06:49 pitches.h
31 -rw-rw-r– 1 ubuntu ubuntu 3149 Apr 27 06:49 pn532_readAllMemoryBlocks.c
32 -rw-rw-r– 1 ubuntu ubuntu 1690 Apr 27 06:49 pn532readMifareMemory.c
33 -rw-rw-r– 1 ubuntu ubuntu 1117 Apr 27 06:49 pn532readMifareTargetID.c
34 -rw-rw-r– 1 ubuntu ubuntu 2326 Apr 27 06:49 pn532writeMifareMemory.c
35 -rw-rw-r– 1 ubuntu ubuntu 498 Apr 27 06:49 pwm_test.c
36 -rw-rw-r– 1 ubuntu ubuntu 2079 Apr 27 06:49 serial_test.c
37 -rw-rw-r– 1 ubuntu ubuntu 785 Apr 27 06:49 spi_test.c
如果要查看代码的内容(我们以linker_led_test.c的内容为例),请输入:
1 ubuntu@ubuntu:~/c_enviroment/sample$ cat linker_led_test.c
2 /*
3 * LED test program
4 */
5 #include <core.h>
6 int led_pin = 1;
7
8 void setup()
9 {
10 if(argc != 2){
11 goto _help;
12 }
13 led_pin = atoi(argv);
14 if((led_pin < 0) || (led_pin > 13)){
15 goto _help;
16 }
17 pinMode(led_pin, OUTPUT);
18 return;
19
20 _help:
21 printf(“Usage %s LED_PIN_NUM(0-13)n”, argv);
22 exit(-1);
23 }
24 void loop()
25 {
26 digitalWrite(led_pin, HIGH); // set the LED on
27 delay(1000); // wait for a second
28 digitalWrite(led_pin, LOW); // set the LED off
29 delay(1000); // wait for a second
30 }
现成代码的编辑:
作为初学者,一开始都是从修改别人的代码开始的,所以你将需要一个文本编辑器。我们倾向于使用nano,但你可能已经有其他常用的文本编辑器,如果没有,输入以下命令安装nano:
ubuntu@ubuntu:~/c_enviroment/sample$ sudo apt-get install nano
你应该可以看到nano被下载和安装了。
我们用上面的源代码为例子,输入:
ubuntu@ubuntu:~/c_enviroment/sample$ nano linker_led_test.c
你将看到类似下面的窗口:
对于这个sketch,有一个地方需要注意到的是,它是命令行的风格。这个例子告诉我们当命令行调用的时候,是怎么样将参数传递到Sketch的。这个可选的,在其他的Sketch中你也可能看到,它确实给pcDuino编写sketch带来了一些好处。
创建你自己的sketch
现在让我们创建自己的Sketch (Arduino圈子里的人,把程序称为Sketch),并成功编译让其运行。按下pin7上的按钮的时候,pin8上的LED灯就亮了。
在sample文件夹内,输入:
ubuntu@ubuntu:~/c_enviroment/sample$ nano button_led.
一个空白的nano窗口将会跳出。
将下面的代码复制和粘贴到它里面.(记住将其粘贴到nano里的光标位置,只需点击鼠标即可)
1 #include <core.h> // Required first line to run on pcDuino
2 int ledPin = 8;
3 int buttonPin = 7;
4 // variables will change:
5 int buttonState = 0; // variable for reading the pushbutton status
6
7 void setup() {
8 // initialize the LED pin as an output:
9 pinMode(ledPin, OUTPUT);
10 // initialize the pushbutton pin as an input:
11 pinMode(buttonPin, INPUT);
12 }
13
14 void loop(){
15 // read the state of the pushbutton value:
16 buttonState = digitalRead(buttonPin);
17
18 // check if the pushbutton is pressed.
19 // if it is, the buttonState is HIGH:
20 if (buttonState == HIGH) {
21 // turn LED on:
22 digitalWrite(ledPin, HIGH);
23 }
24 else {
25 // turn LED off:
26 digitalWrite(ledPin, LOW);
27 }
28 }
修改makefile和编译
现在我们需要在sample文件夹里面增加这个新的sketch 到makefil e里。用nano(或者你其他常用的文字编辑器)打开makefile:
ubuntu@ubuntu:~/c_enviroment/sample$ nano Makefile
你将会看到所有OBJS分别列出,如下:
OBJS = io_test adc_test pwm_test spi_test adxl345_test serial_test liquidcrystal_i2c liquidcrystal_spi interrupt_test tone_test
OBJS += linker_led_test linker_potentiometer_test linker_tilt_test linker_light_sensor_test linker_button_test
OBJS += linker_touch_sensor_test linker_magnetic_sensor_test linker_temperature_sensor_test linker_joystick_test
OBJS += linker_rtc_test linker_sound_sensor_test linker_buzzer_test linker_hall_sensor_test linker_led_bar_test linker_relay_test
OBJS += pn532_readAllMemoryBlocks pn532readMifareMemory pn532readMifareTargetID pn532writeMifareMemory
在文件最后我们将用刚创建的sketch的名字增加一行:
OBJS += button_led
注意,我们没有在最后加.c。
保存文件,并用”<CTRL>X“,然后按 ‘y’, 然后”<enter>”退出nano。
ubuntu@ubuntu:~/c_enviroment/sample$ make
编译的最后以这样结尾:
button_led.c -o ../output/test/button_led ../libarduino.a
如果一切进行顺利,你可以到 “output/test”文件夹找到你已经创建的可执行文件:
1 ubuntu@ubuntu:~/c_enviroment/sample$ cd ../output/test/
2 ubuntu@ubuntu:~/c_enviroment/output/test$ ll
3 total 676
4 drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 27 07:51 ./
5 drwxrwxr-x 3 ubuntu ubuntu 4096 Apr 27 06:49 ../
6 -rwxrwxr-x 1 ubuntu ubuntu 13868 Apr 27 07:51 adc_test*
7 -rwxrwxr-x 1 ubuntu ubuntu 28284 Apr 27 07:51 adxl345_test*
8 -rwxrwxr-x 1 ubuntu ubuntu 13668 Apr 27 07:51 button_led*
9 …..(not showing rest of listing here)
运行你的Sketch:
正确连接LED和按钮开关,输入:
ubuntu@ubuntu:~/c_enviroment/output/test$ ./button_led
如果要终止程序,按<Ctrl>C。
快速回顾:
l 增加#include <core.h>到你的sketch的顶部。
l 在samples目里面创建你的sketch(你可以建立你自己的目录,如果你对linux, makefiles, 和编译代码熟悉的话)。
l 在samples文件夹内的Makefile中,添加不带.c文件名到OBJS。
l 运行make。
l 从output或者test文件夹中运行可执行文件。
l 你可以在你的sketch中引入命令行参数以使其更加方便。
三:Arduino风格的库和例程解释
UART
参考:
请从Arduino官网上参考Serial Class(http://arduino.cc/en/Reference/Serial).
函数:
[*]if (Serial)
[*]available()
[*]begin()
[*]end()
[*]find()
[*]findUntil()
[*]flush()
[*]parseFloat()
[*]parseInt()
[*]peek()
[*]print()
[*]println()
[*]read()
[*]readBytes()
[*]readBytesUntil()
[*]setTimeout()
[*]write()
[*]serialEvent()
UART的接收和发送端与GPIO 的0和1针共享。因此,如果你使用UART, 请不要调用pinmode去改变GPIO的0和1的功能模式。
例程:
接收从终端输入,打印出第二行的输入。读和写的操作都是通过 UART接口。
设置:
将USB转串口的线连接到PC的USB端口,并且在PC上安装USB转串口的驱动。
打开设备管理器中的端口设置。
运行一个类似“sercureCRT”的终端工具,并且配置串口参数为115200 8N1。
然后你在终端输入能看到相关输出。
如果你使用的是Linux PC,你可以在这个例子中使用minicom工具。
示例代码:
1 void setup() {
2 //Initialize serial with baudrate setting, the default config is SERIAL_8N1
3 int rate = 115200;
4 Serial.begin(rate);
5
6 //you will see the string on the terminal
7 Serial.println(“Serial begin: ”);
8 }
9
10 void loop() {
11 //if you type the character in the terminal, available() will return the size you typed
12 if (Serial.available() > 0) {
13 // read the incoming byte:
14 char thisByte = Serial.read();
15
16 //print it on the terminal with DEC format
17 Serial.print(“I received: ”);
18 Serial.println(thisByte, DEC);
19 }
20 delay(200);
21 }
ADC函数:
analogReference()
pcDuino有内部参考的电压。 对于ADC0 和ADC1,参考的电压是2V,对于ADC2-5,参考的电压是3.3V。 因此,这个函数并没有改变和原始的arduino板子不一样的参考电压。
analogRead()
ADC0 和ADC1 是6位的ADC, 返回值是0-63,范围为0到2V。
ADC2~ADC5是12位ADC,返回值是0-4095,范围为0到3.3V。
注意:
[*]如果你想测量高电压,你可以购买pcDuino的桥接板,它可以测量最大至5V的输入。
[*]对于ADC0和ADC1, 虽这项功能可以在4微妙内返回, 但实际的转化率是250Hz。因此,如果输入电压改变, 可以在4毫秒内被察觉。 对于ADC2-ADC5,这项功能可以在35微妙内返回,返回值为实际测量到的返回值。
范例:
测量干电池的电压。
设置:
连接电池的负极到GND,和连接正极到ADC1。
示例代码:
读ADC的值
1 Int adc_id = 0;
2 void setup() {
3 //argv store the adc id that will be measured.
4 //if no args, default adc_id is 0
5 if ( argc == 2 )
6 adc_id = atoi(argv);
7 }
8
9 void loop() {
10 // get adc value
11 int value = analogRead(adc_id);
12
13 //delay some time in loop
14 delayMicroseconds(100000);
15 }
PWM
参考
analogWrite()-值为0的时候,PWM IO 处于低电平
注意:
[*]PWM1和PWM2是硬PWM。 默认频率520Hz,256个占空比级数。PWM3/4/5默认频率5Hz,10个占空比级数。因此实际占空比的值为value*10/256。PWM3/4/5是通过GPIO软件模拟的,因此他们不能设置高频率。如果你需要通过软件模拟高精度和高频率的PWM,将会占用大量CPU的资源。
[*]6个PWM pin是和GPIO共享的,PWM4/ PWM 5的pin同时也和SPI IO共享。因此,如果你想要使用PWM,就不能调用pinMode()或者SPI函数去指定IO。
没有实现的函数:
tone()
noTone()
tone 函数可以通过设置频率和持续时间来产生一个方波。你不能像Arduino那样将tone函数做铃声,因为pcDuino的tone函数只在几个特定的频率下才工作。我们将在未来的版本中改进。
将会为需要更高或者更低的PWM频率的客户提供了一个扩展功能。到目前为止,暂不能在每个频率下都支持256的占空比。假定某个频率的最大占空比是max_level,实际占空比就为level * max_level/256。这个功能对tone()函数也非常有用。
PWM2/3/4/5 将会以后的的版本中改进,最终目标是支持500Hz,占空比256。
范例
通过PWM来控制蜂鸣器发出不同频率的声音。
设置
1个接GND,1个接PWM1。如图所示:
代码:
1 int pwm_id = 1;
2 int duty_level = 128;
3
4 void setup() {
5 //set the default freq (#define default_freq 0)
6 //PWM0/3/4/5, default_freq is 5Hz, and PWM1/2 is 520Hz
7 if ( argc > 1 )
8 pwm_id = atoi(argv);
9 if ( argc > 2 ) //duty level can be 0 ~ 256
10 duty_level = argv;
11
12 //start the PWM
13 analogWrite(pwm_id, duty_level);
14 }
15
16 void loop() {
17 //delay in loop
18 delay(10);
19 }
GPIO
参考函数:
pinMode()
digitalRead()
digitalWrite()
pulseIn()
范例
使用GPIO接口,通过按钮来控制LED的开/关。
设置
将 按钮连上GPIO1,LED连上GPIO5。如图所示:
代码:
1 int led_pin = 5;
2 int btn_pin = 1;
3 void setup() {
4 if ( argc == 3 ) {
5 btn_pin = atoi(argv);
6 led_pin = atoi(argv);
7 }
8 //set the gpio to input or output mode
9 pinMode(led_pin, OUTPUT);
10 pinMode(btn_pin, INPUT);
11 }
12
13 void loop() {
14 //press btn_pin to turn on LED
15 int value = digitalRead(btn_pin);
16 if ( value == HIGH ){ // button pressed
17 digitalWrite(led_pin, HIGH); // turn on LED
18 } else{ // button released
19 digitalWrite(led_pin, LOW); // turn off LED
20 }
21 delay(100);
22 }
I2C
参考函数
请参阅http://arduino.cc/en/Reference/Wire
函数:
[*]begin()
[*]requestFrom()
[*]beginTransmission()
[*]endTransmission()
[*]write()
[*]available()
[*]read()
[*]onReceive()
[*]onRequest()
pcDuino I2C频率设置为200KHz,7-bit。默认为master only。
改进:
未来将会允许客户自行设置I2C的频率,也将会支持10-bit。
范例:
通过I2C接口读取三轴加速器的X/Y/Z轴的值。
设置:
将三轴加速器的I2C接口与pcDuino连接,如图所示
SPI
参考函数
请参阅http://arduino.cc/en/Reference/SPI
函数:
[*]begin()
[*]end()
[*]setBitOrder()
[*]setClockDivider()
[*]setDataMode()
[*]transfer()
pcDuino的SPI只能在主模式下工作,最大速度为12MHz。时钟分频器可以设置为2/4/8/16/32/64/128.
注意:调用setClockDivider()函数只是保存设置时钟分频器,但没有真正的时钟变化。当调用transfer()函数时,才能起作用。
例子:
读取M25P16的SPI flash ID。
设置:
GND———-GND
V3.3———- 3.3V
DO———-SPI_MISO
DI ———-SPI_MOSI
CS ———-SPI_CS
CLK——— SPI_CLK
代码:
1 int ReadSpiflashID(void) {
2 char CMD_RDID = 0x9f;
3 char id;
4 int flashid = 0;
5
6 memset(id, 0×0, sizeof(id));
7 id = SPI.transfer(CMD_RDID, SPI_CONTINUE);
8 id = SPI.transfer(0×00, SPI_CONTINUE);
9 id = SPI.transfer(0×00, SPI_LAST);
10
11 //MSB first
12 flashid = id << 8;
13 flashid |= id;
14 flashid = flashid << 8;
15 flashid |= id;
16
17 return flashid;
18 }
19
20 void setup() {
21 // initialize SPI:
22 SPI.begin();
23 }
24
25 void loop() {
26 //MSB first
27 printf(“spi flash id = 0x%x\n”, ReadSpiflashID());
28 delay(2000);
29 }
四:Arduino风格IDE编
在20130531版本之后中,pcDuino内置了Arduino IDE。
在pcDuino版本的Arduino IDE中, 有一个新的板子类型“pcDuino”, 而且它是默认的板子。
选择一个 LED的例子看看:
接下来,让我们来创建一个新的程序: 我们将用Linker kit button模块和 Linker kit LED 模块来搭建一个小实验。通过按钮来控制LED灯的开关。
代码如下:
1 /*
2 * Linker kit button and LED test
3 */
4 #include <core.h>
5 int led_pin = 2;
6 int button_pin =1;
7
8 void setup()
9 {
10
11 pinMode(led_pin, OUTPUT);
12 pinMode(button_pin, INPUT);
13
14 return;
15
16 }
17
18 void loop()
19 {
20
21 if( digitalRead(button_pin)== HIGH)
22 digitalWrite(led_pin, HIGH);// set the LED on
23 else
24 digitalWrite(led_pin, LOW); // set the LED off
25 }
点击“File”选择“New”:
将代码复制粘贴到新窗口中:
按以下方式保存文件,并命名为“linker_button_led”:
开发板类型选择pcDuino:
点击upload按钮,会弹出一个新窗口并运行程序:
硬件设置方面,Linker button模块插入D1,Linker LED模块插入D2.当没有按按钮的时候,LED灯是熄灭的。
当按下按钮的时候,LED灯就会亮。
非常感谢楼主。
页:
[1]