版主: wanchong , wangyu , eepwwp , firedom |
09120581
最后登陆时间:2015-01-13 22:07:21 |
这个项目非常简单,只要按着教程一步步做完,你就可以建造一个有趣的停车场:Galileo开发板控制自动栅栏和计数。 适用年龄(建造停车场):15+ 适用年龄(玩停车场):3+ 建造时间:30 mins + 先让我们开欣赏一下完成的作品: 物料清单: ● 1块Intel Galieo 开发板(建议用二代开发板;一代板也可) ● 1块电路实验板 ● 2个按钮 ● 1个伺服电机(视频中使用的是Tower Pro SG90 9g电机) ● 1个七段数码管(共阴极) ● 跳线
● 电阻 总结: 第一步:连接和测试七段数码管 第二步:连接和测试伺服电机 第三步:连接数码管和电机按钮 第四步:硬件的跳线连 第五步:编译 六步:将代码载入Galileo开发板完成建造停车场 下面让我们来看一下每一步的具体细节。 第一步:连接和测试七段数码管
数码管原理很简单,由7段二极管组成,这些段分别由字母a、b、c、d、e、f、g表示。我们需要做的是让数码管显示数字。 那么将2接数码管的a脚,3接数码管的b脚,以此类推,我们用M/F跳线将七段数码管与Galileo开发板连接。 然后将数码管的共极接入开发板的GND上,接线用F/F跳线,中间接一个电阻。 现在我们要测试数码管能否正常运行。把下面这段代码载入Galileo开发板,代码控制数码管显示0-9的数字,延迟时间为500ns。 void setup() { pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); } void loop() { //number 0 digitalWrite(2, 1); digitalWrite(3, 1); digitalWrite(4, 1); digitalWrite(5, 1); digitalWrite(6, 1); digitalWrite(7, 1); digitalWrite(8, 0); delay(500); //number 1 digitalWrite(2, 0); digitalWrite(3, 0); digitalWrite(4, 1); digitalWrite(5, 1); digitalWrite(6, 0); digitalWrite(7, 0); digitalWrite(8, 0); delay(500); //number 2 digitalWrite(2, 1); digitalWrite(3, 1); digitalWrite(4, 0); digitalWrite(5, 1); digitalWrite(6, 1); digitalWrite(7, 0); digitalWrite(8, 1); delay(500); //number 3 digitalWrite(2, 0); digitalWrite(3, 1); digitalWrite(4, 1); digitalWrite(5, 1); digitalWrite(6, 1); digitalWrite(7, 0); digitalWrite(8, 1); delay(500); //number 4 digitalWrite(2, 0); digitalWrite(3, 0); digitalWrite(4, 1); digitalWrite(5, 1); digitalWrite(6, 0); digitalWrite(7, 1); digitalWrite(8, 1); delay(500); //number 5 digitalWrite(2, 0); digitalWrite(3, 1); digitalWrite(4, 1); digitalWrite(5, 0); digitalWrite(6, 1); digitalWrite(7, 1); digitalWrite(8, 1); delay(500); //number 6 digitalWrite(2, 1); digitalWrite(3, 1); digitalWrite(4, 1); digitalWrite(5, 0); digitalWrite(6, 1); digitalWrite(7, 1); digitalWrite(8, 1); delay(500); //number 7 digitalWrite(2, 0); digitalWrite(3, 0); digitalWrite(4, 1); digitalWrite(5, 1); digitalWrite(6, 1); digitalWrite(7, 0); digitalWrite(8, 0); delay(500); //number 8 digitalWrite(2, 1); digitalWrite(3, 1); digitalWrite(4, 1); digitalWrite(5, 1); digitalWrite(6, 1); digitalWrite(7, 1); digitalWrite(8, 1); delay(500); //number 9 digitalWrite(2, 0); digitalWrite(3, 1); digitalWrite(4, 1); digitalWrite(5, 1); digitalWrite(6, 1); digitalWrite(7, 1); digitalWrite(8, 1); delay(500); } 如果数码管显示一切正常,那么我们可以进行下一步了。 第二步:连接和测试伺服电机
现在我们要测试伺服电机了。已连接好的数码管不用去掉。 接下来我们要做的是: ● 红色线通常用作电源线,所以我们用红色M/M跳线连接电机和电源。 ● 黑色线通常用作地线,所以我们用黑色M/M跳线接电机和开发板的GND。
● 黄色线通常用作信号线,所以我们用黄色M/M跳线接电和开发板的10号针脚。 做完上面的连线后,我们可以将下面这些代码载入Galileo开发板,来测试私服电机是否可以正常工作:电机做90度的旋转。(不用担心数码管,在这个测试中,数码管不会运行) #include <Servo.h> Servo myservo; int pos = 0; void setup() { myservo.attach(10); } void loop() { for(pos= 20; pos < 115; pos += 1) { myservo.write(pos); delay(5); } for(pos = 115; pos >= 20; pos-=1) { myservo.write(pos); delay(5); } } 如果伺服电机正常工作,那么我们可以进行第三步了! 第三步:连接数码管和电机按钮
不用拔掉数码管和伺服电机的接头,我们需要用它们测试按钮。让我们先按下面的方法将按钮连接好。
重复上面4步,将另外一个按钮连接好,此按钮接12针脚。 第四步:硬件的跳线连
很好,现在你已经成功建造了停车场。你的这个停车场工具应该像上图那样连线。(图中的开发板是Galileo 一代开发板,数码管的每段二极管和开发板中间应该有电阻,不过这些到时没什么,最关键的还是线要连对。) 第五步:编译 这个是最终代码! #include <Servo.h> Servo myservo; int pos = 0; void setup() { pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(11, INPUT); pinMode(12, INPUT); myservo.attach(10); } int counter = 0; int last_input_value1 = LOW; int last_input_value2 = LOW; void loop() { int switch_input_value1 = digitalRead(11); int switch_input_value2 = digitalRead(12); //######## INGRESSO ############### if(counter < 10){ if(last_input_value1 == LOW && switch_input_value1 == HIGH) { counter = counter + 1; for(pos = 20; pos < 115;pos += 1) { myservo.write(pos); //delay(15); } delay(3500); for(pos = 115; pos>=20;pos-=1) { myservo.write(pos); //delay(15); } } last_input_value1 = switch_input_value1; } //######## USCITA ############### if(counter > 0){ if(last_input_value2 == LOW && switch_input_value2 == HIGH) { counter = counter - 1; for(pos = 20; pos < 115;pos += 1) { myservo.write(pos); //delay(15); } delay(3500); for(pos = 115; pos>=20;pos-=1) { myservo.write(pos); //delay(15); } } last_input_value2 = switch_input_value2; } writeNumber(counter); } void writeNumber(int number) { switch(number){ case 0: digitalWrite(2, 1); digitalWrite(3, 1); digitalWrite(4, 1); digitalWrite(5, 1); digitalWrite(6, 1); digitalWrite(7, 1); digitalWrite(8, 0); break; case 1: digitalWrite(2, 0); digitalWrite(3, 0); digitalWrite(4, 1); digitalWrite(5, 1); digitalWrite(6, 0); digitalWrite(7, 0); digitalWrite(8, 0); break; case 2: digitalWrite(2, 1); digitalWrite(3, 1); digitalWrite(4, 0); digitalWrite(5, 1); digitalWrite(6, 1); digitalWrite(7, 0); digitalWrite(8, 1); break; case 3: digitalWrite(2, 0); digitalWrite(3, 1); digitalWrite(4, 1); digitalWrite(5, 1); digitalWrite(6, 1); digitalWrite(7, 0); digitalWrite(8, 1); break; case 4: digitalWrite(2, 0); digitalWrite(3, 0); digitalWrite(4, 1); digitalWrite(5, 1); digitalWrite(6, 0); digitalWrite(7, 1); digitalWrite(8, 1); break; case 5: digitalWrite(2, 0); digitalWrite(3, 1); digitalWrite(4, 1); digitalWrite(5, 0); digitalWrite(6, 1); digitalWrite(7, 1); digitalWrite(8, 1); break; case 6: digitalWrite(2, 1); digitalWrite(3, 1); digitalWrite(4, 1); digitalWrite(5, 0); digitalWrite(6, 1); digitalWrite(7, 1); digitalWrite(8, 1); break; case 7: digitalWrite(2, 0); digitalWrite(3, 0); digitalWrite(4, 1); digitalWrite(5, 1); digitalWrite(6, 1); digitalWrite(7, 0); digitalWrite(8, 0); break; case 8: digitalWrite(2, 1); digitalWrite(3, 1); digitalWrite(4, 1); digitalWrite(5, 1); digitalWrite(6, 1); digitalWrite(7, 1); digitalWrite(8, 1); break; case 9: digitalWrite(2, 0); digitalWrite(3, 1); digitalWrite(4, 1); digitalWrite(5, 1); digitalWrite(6, 1); digitalWrite(7, 1); digitalWrite(8, 1); break; } } 第六步:将代码载入Galileo开发板完成建造停车场
非常棒!如果你觉得还不够,你可以想视频中那样,画好停车位等等。现在你可以尽情享受你的停车场了! 备注:Galileo 第一代开发板无法满足私服电机和数码管所需的电压,所以需要加一个外部电源。所以一开始时,笔者推荐您使用Galileo第二代开发板,因为这个开发板能提供足够的电压。 |
|
|
共1条 1/1 1 |