智能垃圾分类机器人

上传人:付****f 文档编号:243980488 上传时间:2024-10-01 格式:PPT 页数:30 大小:4.45MB
返回 下载 相关 举报
智能垃圾分类机器人_第1页
第1页 / 共30页
智能垃圾分类机器人_第2页
第2页 / 共30页
智能垃圾分类机器人_第3页
第3页 / 共30页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,智能垃圾分类机器人, arduino,基础,01,A,什么是Arduino?,02,B,Arduino能做什么么?,03,C,Arduino怎么用?,2,一、Arduino的由来,Arduino创始人Massimo Banzi之前是是意大利利Ivrea一一家高科科技设计计学校的的老师。他的学学生们经经常抱怨怨找不到到便宜好好用的微微控制器器。,2005年冬天天,Massimo Banzi跟David Cuartielles讨论了了这个问问题。DavidCuartielles是是一个西西班牙籍籍晶片工工程师,当时在在这所学学校做访访问学者者。,两人决定定设计自自己的电电路板,并引入入了Banzi的学生生DavidMellis为电路路板设计计编程语语言。,两天以后后,David Mellis就写写出了程程式码。又过了了三天,电路板板就完工工了。这这块电路路板被命命名为Arduino。,二、什么么是Arduino?,Arduino是一种,开,开源的,电,电子开,发,发平台,,,,该平,台,台最初,主,主要基,于,于AVR单片机,的,的微控,制,制器和,相,相应的,开,开发软,件,件,目,前,前在国,内,内正受,到,到电子,发,发烧友,的,的广泛,关,关注。,自从2005年Arduino腾空出,世,世以来,,,,其硬,件,件和开,发,发环境,一,一直进,行,行着更,新,新迭代,。,。,几乎任,何,何人,,即,即便,不,不懂电,脑,脑编程,,,, 利,用,用这个,开,开发板,也,也能用Arduino做出炫,酷,酷有趣,的,的东西,,,,比如,对,对感测,器,器探测,做,做出一,些,些回应,、,、闪烁,灯,灯光、,控,控制马,达,达等。,三、Arduino能做什么么?,最简单应应用:,通过Arduino开发板引引脚输出出高电平平点亮一一盏LED灯。,三、Arduino能做什么么?,利用Arduino板作为中中央控制制器实现现家居智智能化,语音口口令开灯灯、开空空调,随随着室内内光线环环境自动动调节亮亮度,手手机APP控制家用用电器等等,让你的arduino连入物物联网,Arduino高端应用用,乐为联网网云数据据平台,四、认识识Arduino开发板-ArduinoUNO,四、认识识Arduino开发板-arduinoMega2560,五、Arduino开发环境境,Arduino的编程,是,是在Arduino IDE上进行,的,的,如,左,左图编,程,程界面,所,所示;,开发环,境,境提供,了,了最基,本,本的模,板,板,包,含,含了setup(,),)函数和loop()函数;,在setup(,),)函数上,方,方空白,区,区域,,可,可以插,入,入需要,用,用到的,函,函数.h头文件,以,以及申,明,明要用,到,到的函,数,数。,六、函数数的概念念,定义:函数是一一种能完完成某种种特定功功能二端端口通道道,通过过输入合合适的东东西获得得想要的的某种输输出;,举例:例如数学学上y=2x,这条函函数可以以完成将将输入值值翻倍这这样一个个工作;,注意:,arduino提供了,大,大量的,基,基础函,数,数,包,括,括I/O控制、,时,时间函,数,数、中,断,断函数,、,、串口,通,通信函,数,数等;,arduino也提供,了,了许多,关,关于这,些,些基础,函,函数的,实,实例程序,这些,例,例程可,以,以在arduino开发环,境,境的“File-Examples”菜单,中,中找到,。,。,七、Arduino的常用基基本函数数,Arduino程序的主主体包括括:Setup()函数和loop()函数;,(1)setup()函数:在程序中中只运行行一次,它的功功能为完完成程序序的各类类初始化化工作;,(2)loop()函数:程序的主主函数,程序运运行过程程中loop()函数不断断循环。,Arduino常用函数数-pinMode(),功能:将指定的的引脚配配置成输输出或输输入,语法:pinMode(pin,mode),参数:,pin:表示要要设置模模式的引引脚,mode:包括INPUT或OUTPUT,返回值:无,例程:,intledPin =13;/LED连接到数数字脚13,void setup(),pinMode(ledPin,OUTPUT); /设置数字字脚为输输出,void loop(),digitalWrite(ledPin,HIGH); /点亮LED,delay(1000);/等待一秒秒,digitalWrite(ledPin,LOW);/灭掉LED,延迟(1000); /等待第二二个,Arduino常用函数数-digitalWrite(),功能:给一个数数字引脚脚写入HIGH或者LOW。,语法:digitalWrite(pin,value),参数:,pin:引脚编号号,value:HIGH or LOW,返回值:无,例程:,intledPin=13;/LED连接到数数字13号端口,void setup(),pinMode(ledPin,OUTPUT);/设置数字字端口为为输入模模式,void loop(),digitalWrite(ledPin,HIGH);/使LED亮,delay(1000);/延迟一秒秒,digitalWrite(ledPin,LOW);/使LED灭,delay(1000);/延迟一秒秒,Arduino常用基本本函数-digitalRead(),功能:,读取指定定引脚的的值,HIGH或LOW。,语法:digitalRead(PIN),参数:,Pin:你想读读取的引引脚号,返回值:HIGH或LOW,例程:intledPin=; / LED连接到13脚intinPin= 7; /按钮连接接到数字字引脚7intval= 0; /定义变量量以存储储读值void setup()pinMode(ledPin,OUTPUT);/将13脚设置为为输出pinMode(inPin, INPUT);/将7脚设置为为输入void loop()val=digitalRead(inPin);/读取输入入脚digitalWrite(ledPin,val);/将LED值设置为为按钮的的值,Arduino常用基本本函数-analogRead(),功能:从指定的的模拟引引脚读取取模拟数数据值。,语法:analogRead(PIN),参数:,pin:从输入入引脚读读取数值值,返回值:,从0到1023的整数值值,例程:intanalogPin= 3; /电位器(中间的的引脚)连接到到模拟输输入引脚脚3/另外两个个引脚分分别接地地和+5Vintval= 0; /定义变量量来存储储读取的的数值void setup()serial.begin(9600); /设置波特特率(9600)void loop()val=analogRead(analogPin); /从输入引引脚读取取数值serial.println(val); /显示读取取的数值值,Arduino常用基本本函数-analogWrite(),功能:从一个引引脚输出出模拟值值(PWM),语法:analogWrite(pin,value),参数:,pin:用于输输入数值值的引脚脚。,value:占空比比:0(完全关关闭)到到255(完全打打开)之之间。,返回值:无,例程:通过读取取电位器器的阻值值控制LED的亮度intledPin =9;/LED连接到数数字引脚脚9intanalogPin= 3; /电位器连连接到模模拟引脚脚3intval= 0; /定义变量量存以储储读值void setup()pinMode(ledPin,OUTPUT); /设置引脚脚为输出出引脚void loop()val=analogRead(analogPin); /从输入引引脚读取取数值analogWrite(ledPin,val/ 4); /以val/ 4的数值点点亮LED(因为analogRead读取的数数值从0到1023,而analogWrite输出的数数值从0到255),Arduino常用基本本函数-delay(),功能:使程序延延时特定定的时间间(毫秒秒),语法:delay(ms),参数:,ms:暂停的的毫秒数数(unsignedlong),返回值:无,例程:,ledPin=13/ /LED 连接接到数字字 13 脚,void setup(),pinMode(ledPin,OUTPUT);/设设置引引脚为输输出,void loop(),digitalWrite(ledPin,HIGH);/点点亮LED,delay(1000);/等等待1秒秒,digitalWrite(ledPin,LOW);/灭灭掉LED,delay(1000);/等等待一一秒,中断的定义,:,:,由于某一随,机,机事件,的,的发生,,,,单片,机,机暂停,原,原程序,的,的运行,,,,转去,执,执行另,一,一程序,(,(随机,事,事件),,,,处理,完,完毕后,又,又自动,返,返回原,程,程序继,续,续运行,,,,其发,生,生过程如右图。,中断的要素,:,:,主程序,:,:单片,机,机正在,运,运行的,程,程序。,中断源,:,:引起,中,中断的,原,原因,,或,或能发,生,生中断,申,申请的,来,来源。,中断服,务,务程序,:,:处理,中,中断事,件,件的程,序,序。,Arduino常用基本本函数-中断介绍绍,中断发生生的过程程,Arduino常用基本本函数-中断函数数,1、interrupts()函数,功能:负责打开总中断,返回值:无,参数:无,2、noInterrupts()函数,功能:负责关,闭,闭总中,断,断,返回值:无,参数:无,3、attachInterrupt(interrput,function,mode),功能:用于设置外部中,断,断,参数:3个,分别表,示,示中断,源,源,中,断,断处理,函,函数和,触,触发模,式,式,它,们,们的具,体,体含义,如,如下。,中断源,:,:可选中,断,断0或者1,对应arduino的2或者3号数字,引,引脚。,中断处,理,理函数,:,:是一段,子,子程序,,,,当中,断,断发生,时,时执行,该,该子程,序,序部分,,,,其中,参,参数值,为,为函数,的,的指针,。,。,触发模,式,式:有四种,类,类型,LOW,(,(低电平,触,触发),、,、CHANGE,(,(变化时,触,触发),、,、RISING(低电,平,平变为,高,高电平,触,触发),、,、FALLING(高电平,变,变为低,电,电平触,发,发),Arduino常用基本本函数-中断函数数,4、detachInterrupt(interrput)函数,功能:用于取消中断,参数,:,Interrupt:表示所要取消消的中断断源,例程:用中断源源0(接引脚脚D2)作为触触发源控控制arduino UNO板上的LED亮或灭,volatileintstate=LOW;,void setup(),Serial.begin(9600);,attachInterrupt(0,change,CHANGE);/当D2电平改变变时,触发中断断函数,void loop(),digitalWrite(13, state);,if(state=LOW),Serial.println(111);,if(state=HIGH),Serial.println(222);,void change()/中断函数数,state= !state;,Arduino常用基本本函数-串口通信信函数,1、Serial.begin(),功能:用于设置置串口的的波特率,波特率是是指每秒秒传输的的比特数数,除以以8可得到每每秒传输输的字节节数。,一般的波波特率有有9600、19200、57600、115200等。,介绍:通过在头头文件HardwareSerial.h中定义一一个HardwareSerial类的对象象serial,然后直直接使用用该类的的成员函函数来实实现。,2、Serial.available(),功能:用来判,断,断串口,是,是否收,到,到数据,返回值:int型,3、Serial,.,.read(,),),功能:用于读入串,口,口数据,返回值:int型的串,口,口数据,。,。,Arduino常用基本本函数-串口通信信函数,4、Serial.print(),功能:用于从串口,输,输出数,据,据,数,据,据可以,是,是变量,,,,也可,以,以是字,符,符串。,5、Serial,.,.println(,),),功能:与Serial,.,.print函数类,似,似,都,是,是从串,口,口输出,数,数据,,只,只是Serial,.,.println函数多,了,了回车,换,换行功,能,能。,例程:读取输入入的字符符,并在在监视器器中显示示出来的的程序如如下。,Stringval=;,void setup(),Serial.begin(9600);,void loop(),while(Serial.available() 0),val+=char(Serial.read();,delay(5);,if(val.length() 0),Serial.println(val);,val=; ,八、认识识函数库库,函数库:由系统建建立的具具有一定定功能的的函数的的集合。库中存存放函数数的名称称和对应应的目标标代码,以及连连接过程程中所需需的重定定位信息息。用户户也可以以根据自自己的需需要建立立自己的的用户函函数库。,库函数:存放在函函数库中中的函数数。库函函数具有有明确的的功能、入口调调用参数数和返回回值。,头文件:有时也称称为包含含文件。C语言库函函数与用用户程序序之间进进行信息息通信时时要使用用的数据据和变量量,在使使用某一一库函数数时,都都要在程程序中嵌嵌入(用用#include)该函数数对应的的头文件件。,九、机器器人包含含的库函函数,库函数组组成:由.h文件(头头文件)和.cpp文件(源源程序文文件)组组成。,序号,库函数名称,包含文件,库函数主要功能,1,Track,Track.h,、,Track.cpp,对应机器人红外传感器的库函数,主要用于控制机器人沿着黑色线进行循线。,2,ColSensor,ColSensor.h,、,ColSensor.cpp,对应机器人颜色传感器的库函数,主要用于识别机器人垃圾块的颜色。,3,ColQueue,ColQueue.h,、,ColQueue.cpp,对应机器人颜色传感器的库函数,以队列的形式来记忆机器人检测到的垃圾块的颜色数据。,4,Car,Car.h,、,Car.cpp,对应机器人电机的库函数,主要用于简单控制机器人的移动。,5,Function,Function.h,、,Function.cpp,定义红外传感器模块、颜色传感器模块、电机的,arduino,引脚,控制机器人进出路口、拐弯等,控制舵机动作和初始化等功能。,十、怎样样使用库库函数,放置位置置:一般是放放到lib文件里,调用方法法:将它所在在的文件件名用#include,libraries所在的路路径,库函数拷拷贝到的的路径,#ifndef ColSensor_h,#define ColSensor_h,classColSensor,private:,/定义义引脚,intS0, S1,S2,S3, OUT;,/定义义延时,unsignedlong time;,public:,/定义义计数器器,unsignedlong g_count;,/定义义数组,用来存存放读取取到的RGB值值,intg_array3;,/定义义数组,用来存存放比例例系数,floatg_SF3;,/构造造函数,ColSensor(int a, intb,intc,int d, inte,unsignedlong f);,/将引引脚配置置为输出出,同时时设置输输出比例例因子,void Mode(int a=1,intb= 1);,/*控制制数字引引脚,切切换滤波波器。红红,绿,蓝分别别对,应S2与与S3的的00,11,01电电平;10时过过滤所有有颜色*/,void Digital_out(inta,intb);,/计算算比例系系数,void Test();,/计算算RGB值,void Get();,;,#endif,垃圾分类类小车ColSensor.h文件内代代码,#include,#includeColSensor.h,ColSensor:ColSensor(inta,int b, intc,intd,int e, unsigned longf),S0= a; S1 =b;S2=c;S3= d; OUT= e; time=f;,g_count =0;,void ColSensor:Mode(inta,int b),pinMode(S0,OUTPUT);,pinMode(S1,OUTPUT);,pinMode(S2,OUTPUT);,pinMode(S3,OUTPUT);,pinMode(OUT,INPUT);,digitalWrite(S0, !(a=0);,digitalWrite(S1, !(b=0);,void ColSensor:Digital_out(int a, intb),digitalWrite(S2, !(a=0);,digitalWrite(S3, !(b=0);,void ColSensor:Test(),g_array0 =0;g_array1= 0; g_array2=0;,for(intj =0;j3;j+),for(inti =0;itime);,g_arrayj += g_count;,g_arrayj /= 3;,g_SFj =255.0/g_arrayj;,Digital_out(1,0);,g_count =0;,void ColSensor:Get(),for(inti =0;itime);,g_arrayi =g_count;,g_arrayi =g_SFi* g_arrayi;,Digital_out(1,0);,g_count =0;,垃圾分类类小车ColSensor.cpp文件内代代码,谢谢!,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 市场营销


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!