十岁孩子做了个数字时钟送妈妈,顺便把作业交了
2015/12/4 家庭儿童教育

     5000G资料免费领微信号:jiatingertongjiaoyu

     多妈私人微信:ddgeer

     Liz:Alex是我十岁的儿子。最近他和我合作完成了一个学校布置的作业。这是一个很成功的作业,同时作为父母的我们也给予他很好的指导,因此我想在这里与大家分享这次经历。

     以下是Alex的分享:

     我妈想要一个数字时钟,而我也需要完成我的作业。所以我花了两个月把闲置的树莓派小电脑做成了数字时钟,一石二鸟,请叫我机智のboy。

     爸爸给我提供了来自战斗民族俄罗斯的一些数码管和芯片,还买了一个170V的电池来当数码管的电源。我需要做的第一件事情就是测试这些原材料。

     首先我把数码管,芯片和电源安装在了电路板上。芯片有ABCD四个输入端口,这些端口用来指示亮哪一个灯。比如在二进制里7表示为0111,所以我们需要把ABC设置为显示,D设置为不显示,(A=1, B=2, C=4 and D=8)来表示数字7。我测试的时候用一个跨线电缆使四个接口为0V(不显示数字)或5V(显示数字)。

     在测试完第一个数码管和芯片后,我在树莓派电脑上编了一个程序进行第二次测试。我用4个 GPIO管脚连接到引脚A、B、C和D芯片。这个程序会从数字0到9循环,然后在二进制中用“high”和“low”的逻辑判断来实现打开或关闭管脚的目的。

     一旦这个程序顺利运行,那么接下来测试所有的芯片和数字时钟数码管就会变得so easy。每个部分都正常运行,但有一个数码管除外(测试时出现了3和9同时亮起的问题),所以我把这个数码管用来表示小时的第一位,因为小时的第一位只需要显示数字1(采用12小时计时法)。

    

     关于程序

     当树莓派电脑启动时,我的数字时钟程序也会自动启动。

     我用geany编辑器在c盘写好了数字时钟的程序。

     然后我打开管脚0,这也意味着用转换器打开了高压电源。

     接着我测试了时钟,让时钟的小时部分从1到12显示,分钟部分从0到59显示。

     开始循环时,我是这样做的:

     和电脑对照时间(电脑连接互联网以确保时间准确)

     小时的数字会在1和23之间循环,所以当小时大于12时,我会减去12.

     然后我将小时数和分钟数都以二进制表示。也就是说,用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

     这样一来,我们就得到了所有数字的二进制。然后我们就可以用1和0所代表的高低接口来表示了。(比如7,我们就可以表示为低高高高,因为它的二进制写法是0111 。)

     如果你是条小懒虫,下面是我为你准备的完整表格,你可以参照。

    

     接下来我们用C语言来写入代码:

     #include /* These are libraries */

     #include

     #include

     #include

     // turns a pin on or off

     void nixiePin(int p, int v){

     if (p != -1) {

     digitalWrite(p, v);

     }

     }

     // converts to binary and sends values to 4 pins

     void nixiePins(int p1, int p2, int p4, int p8, int v){

     nixiePin(p1,v&1);

     nixiePin(p2,v&2);

     nixiePin(p4,v&4);

     nixiePin(p8,v&8);

     }

     // splits the time into digits

     void nixieTime(int h,int m, int s) {

     nixiePins( 1, -1, -1, -1, h/10); /* quotient of hour / 10 */

     nixiePins( 2, 3, 4, 5, h%10); /* remainder of hour / 10 */

     nixiePins( 6, 7, 21, -1, m/10); /* quotient of minute / 10*/

     nixiePins(22, 23, 24, 25, m%10); /* remainder or min / 10 */

     }

     // makue sure all the digits work

     void testClock(void){

     int i;

     for (i=1; i<=12; i++) {

     nixieTime(i,0,0);

     delay(250);

     }

     for (i=1; i<=59; i++) {

     nixieTime(12,i,i);

     delay(250);

     }

     }

     // set up the pins we will use

     void initPin(int p) {

     pinMode(p, OUTPUT);

     digitalWrite(p, LOW);

     }

     // this is the main part of the program

     int main (void) {

     time_t now; /* its a variable that holds time info */

     struct tm *ntm; /* it is a variable */

     int i;

     wiringPiSetup(); /* set up pins 0-7 and 21-29 to use */

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

     initPin(i);

     }

     for (i=21; i <=29;i++) {

     initPin(i);

     }

     digitalWrite(0, HIGH); /* turn on high voltage power */

     testClock(); /* test all the digits */

     while (1) { /*starts and infinite loop */

     now=time(NULL); /* ask the computer for the time */

     ntm=localtime(&now); /* it formats the time */

     if (ntm->tm_hour > 12) { /* if hour is more than 12 - 12 */

     ntm->tm_hour = ntm->tm_hour-12;

     }

     /* it tells it to write that number to the nixie tubes*/

     nixieTime(ntm->tm_hour,ntm->tm_min,ntm->tm_sec);

     delay (1000); /* wait for 1 second */

     }

     return(0);

     }

     电路板

    

    


     爸比帮我焊接了一个塑料板,电路板上面接有四条数码管,每个对应了一个芯片(黄线就是了)。

     黑色线用于接地线,红色线为5V和12V的电线,而每个芯片则对应了一条地线和一条5V线。

     不过,数码管要求在170V的高压下工作,所以我们还需要接一个高压电源,这里我们用的是绿色线。而且,我们还得外加一个2毫安的电阻,防止电流过大烧毁了我们的作品。

     此外,我还加了一个晶体管和两个电阻,以限制电流。这将等同于电源开关,用于控制高压电源。

     我还加了一个USB端口,用于连接地线和5V线,作为供树莓派的电源。

     外壳

     以上步骤完成后,我们就开始做外壳了。所谓人靠衣装美靠亮噢不不不,美靠造型,我用的是木盒子,外加两面的塑料透明板。这个盒子是爸爸帮我锯的(人家还小嘛)。然后用铁钉和螺丝固定,就完成了。

     最后

     曾经有一个新闻,说一个学生带了个自己做的电子钟到学校去,老师以为是炸弹,都报警了!真是吓死宝宝我了,为了不让我面临这样的人生大场面,爸比和妈咪事先打电话通知了老师。我觉得,老师一定会记得我的,因为她问得非常详细,像查户口一样。

     不过,这只是我的作品的开始啦。我准备把它改进一下,再送给妈妈。我想加一个报警器,还有摄像头、麦克风和扬声器,这样就可以进行人脸识别了。要是可以的话,我还想让它变成更高级的东西,就像钢铁侠一样。

     关注公众号:jiatingertongjiaoyu

     回复:资料

     获取所有资料列表及领取方式

     每周推送新资料

     音乐:

     《世界儿童钢琴名曲》136首

     《儿童中国民乐品赏》172首

     《世界儿童古典音乐》213首

     国内外经典名曲《音乐故事》107首

     儿歌童谣:

     经典英文童谣《WeeSing唱歌拉》(9DVD+20CD+歌词)

     启蒙英语《美国童谣MuffinSongs》226集

     全球早教第一品牌《金宝贝》早教音乐教材(66CD音乐+2DVD教材视频))

     《经典中文儿歌》384首

     培养宝宝内涵和气质的《古典宝宝Classical Baby》

     科普地理:

     《美国国家地理幼儿版》有声点读版 (五年大合集)

     《美国国家地理儿童版》

     台湾著名科普读物《小小牛顿幼儿馆》105集

     美国销量第一《小小爱因斯坦》(视频+音频+学习卡)

     美国科普经典《神奇校车》(52集动画片+MP3)

     法布尔《昆虫记》有声故事32集

     《十万个为什么》动画版

     英文原版动画:

     BBC启蒙学英语动画《玛泽的故事》

     BBC动画《小鸟三号》50集

     BBC经典原版动画片《蓝色小考拉》

     BBC经典动画《天线宝宝英文版》5季67集

     BBC著名动画《巴布工程师英文版》38集

     BBC英文动画《小猪威比》50集

     英国著名动画《小P优优》POCOYO英文版(81集)+中文版(52集)

     迪士尼经典《森林王子》英文版26集

     迪士尼动画《小熊维尼与跳跳虎》

     迪士尼动画《米奇妙妙屋》英文5季+中文2季

     美国动画《卡由》239集(33册电子绘本+视频+音频)

     美国动画《天才宝贝熊》(五季全195集)

     美式英语教学片《朵拉》史上最全8季英文版(还有配套音频+32集台湾版+33册绘本+8部电影+7个FLASH游戏)

     《贝贝熊》(英文版25集+中文版80集)

     《加菲猫和他的朋友们》全7季共124集

     《忙忙碌碌镇》51集

     《粉红猪小妹》共209集(1~4季)

     《小鼠波波和他的朋友们》

     中文版动画:

     最畅销早教动画《巧虎大陆版》共224集

     《天线宝宝中文版》6季84集

     《米奇妙妙屋》英文5季+中文2季

     《托马斯和他的朋友们中文版》80集

     《巴布工程师中文版》共150集

     《巴布工程师台湾版》39集

     其他:

     《466本经典绘本》

     《宫崎骏经典动画》11部

     最适合学英语的《50部动画电影》

     《崔玉涛育儿讲堂》77个视频

     涂色绘画启蒙《我来画》

     幼儿园适用《趣味识字》100集

     BBC动画英语自然拼读《字母积木》1~4季

     自然拼读教材《Zoophonia's Kids》1-7册(pdf+MP3)

     《哈考特系列之数学概念》(全套)

    http://www.duyihua.cn
返回 家庭儿童教育 返回首页 返回百拇医药