IntroduzioneallaschedaArduino/Genuino
FrancescoMar6nelli,SergioGaleanieDanieleCarnevaleUniversitàdiRoma"TorVergata"
Dipar6mentodiIngegneriaCivileeIng.Informa6caDICII
1
USB
Ambientedisviluppodelcodice(IDE)
Comunicazioneseriale(USB,wireless)
SchedaArduino
FRAMEWORKGENERALE
Circuiteria(eleSro-meccanica)
2
Arduinoperme,ediges/re,a,raversoilcodice,segnaliele,riciiningressoeuscita.
SCHEDAARDUINO:HARDWARE
Arduino2009
3Genuino2016
-ConneSoreUSB-ConneSoreUSB
-MicrocontrolloreATmega328p(16MHz)
-Ingressidigitali(0-5V)
-Ingressianalogici(0-5V)
-AlimentazioneI/O(7-12V,Jackepin)
-Conver6toreUSB-Seriale
-PulsantediReset
SCHEDAARDUINO:SOFTWARE
IDE
4Serialmonitor
IntegratedDevelopmentEnvironment- SintassisimilealcodiceC++- Pre-compilazioneperverificadel
codice- ToolperlascriSuradelcodicenel
microcontrollore- Menùperselezionareil6podi
schedaelaportaUSB- DuefunzioniprincipaliI. setup():eseguitaunasolavolta
appenalaschedavieneaccesa.II. loop():codiceeseguitociclicamente- Finestrapervisualizzareida6seriali
scambia6traschedaePC
SCHEDAARDUINO:PRECAUZIONIHARDWARE
5
- IlfondodellaschedahadeipiedinicondufvicheNONdevonoentrareincontaSo(isolareilfondodellascheda)
- NoneffeSuarecollegamen6aschedaalimentata- Nonusarepuntemetallichesullaschedachepossano
cortocircuitarneicomponen6- Nonsovralimentarenécreareconnessionicheassorbanopiù
di100mAdaognisingolopiedino
...amailuoghiasciufepuli6.
avrdude:stk500_recv()programmerisnotrespondingavrdude:stk500_recv()programmerisnotrespondingavrdude:stk500_recv()programmerisnotrespondingavrdude:stk500_recv()programmerisnotresponding
SCHEDAARDUINO:TECNICALITIES...
6
• AVR1-8bitRISC2technology,[email protected]• 32KBself-programmingFlashProgramMemory,2KB
SRAM,• 1KBEEPROM• 6Channel10-bitA/D-converter,14DigitalI/OPins(of• which6providePWMoutput)• debugWIREOn-chipDebugSystem• Upto20MIPSthroughputat20MHz• (onArduinoboard)1/16MHz=62.5nsperCPU(clock)
cycle• Two8-bitTimer/CounterswithSeparatePrescalerand
CompareMode• One16-bitTimer/CounterwithSeparatePrescaler,
CompareModeandCaptureMode• RealTimeCounterwithSeparateOscillator
SCHEDAARDUINO:SEGNALIDIINGRESSOUSCITA(1/3)
7
Segnalidigitalitra0Ve5Vdiingressoediuscita.
tempo
Codicebinario
Voltaggio(0-5V) SegnaleDigitale
Voltaggio(0-5V)SegnaleAnalogicoCampioniacquisi6
tempo
Segnalianalogicitra0Ve5Viningresso,sonocampiona6etrascrifincodicebinarioconunaprecisionedicirca1mV(5V/1024)avendoadisposizione8bit(AnalogtoDigitalConverterda8bit).
5V
SCHEDAARDUINO:SEGNALIDIINGRESSOUSCITA(2/3)
8
PWM:PulseWidthModulatedsignalE'caraSerizzatodasegnaliadondaquadraicuifron6disalitadistanosempreTpwm,ovveroilperiododelPWM,mentrelapercentualedelperiodoincuiilsegnaleèalto(5V)èdeSodutycycle.Sull'ArduinoTpwmèperdefaultparia2ms,mentreèpossibileselezionare255diversilivellididutycycle(8bitDAC).
Tpwm
SCHEDAARDUINO:SEGNALIDIINGRESSOUSCITA(3/3)
9
INPUT OUTPUT
14Digitali(tracui6PWMOUTPUT)
5Analogici6PWM
14Digitali(tracui6PWMOUTPUT)
Comepossonoessereu6lizza6:• acquisiresegnalidigitalieanalogici• produrresegnaliPWM• comunicazioneseriale,I2C,SPI,USART• abilitarefinoadueinterrupt
IDE:STRUTTURASOFTWAREGENERALE
10
• Compilazionesooware• Esecuzionedelbootloaderchescrive
sullamemoriaflash(32KB)delmicrocontrolloreeventualenuovocodiceinarrivodallaseriale(PC)epredisponelevariabilinellanellaram(2KB)configurandoipindellascheda
• Vieneeseguitaladunzionesetup()• Ilmicrocontrolloreesegueciclicamente
lafunzioneloop()lacuiinterruzionepuòavvenireacausadegliinterrupt(funzionalitàspecificadialcunipin),cherichiamanol'esecuzionedelleInterruptServiceRou6ne,odelpulsantediReset.
Bootloader Power on
Initialization: pin settings,serial communication,interrupt service routine...
Setup()
Loop()
’Endless’ executed code...ISR
Interrupt
Reset
Flussodelleoperazioni
PROGRAMMAZIONE:VARIABILI
11
ConstantsHIGH—LOW,INPUT—OUTPUT,true—false,integerandfloa6ngpointconstantsDatatypesvoid,boolean,char,unsignedchar,byte,int,word,long,double,array,string...Conversionchar(),byte(),int(),float()...Qualifiersvariablescope,sta6c,vola6le,const,unsignedU/li/essizeof(),PROGMEM
moreonexamples...
PROGRAMMAZIONE:OPERATORIESTRUTTUREDICONTROLLO
12
Aritme/c:+,-,∗,/,%,=(assegnazione)Comparison:==,!=,<,<=,>=,>Boolean:&&,||,!Pointer:⋆,&Bitwise:~,&,|,^,<<,>>Compound:++,/=,&=,|=...
if...elseforswitchcasewhiledo...whilebreakcon/nuereturngoto
Operatori: StruSuredicontrollo:
moreonexamples...
IDE:INTERFACCIAEFUNZIONALITA'(1/3)
13
Iconeefinestre:- Compilazionedelcodice- Compilazioneesalvataggiosullascheda- Nuovofile- Aprifile- Salvafile- Serialmonitor- Finestraperl'edi6ngdelcodice- Finestraperimessaggidellacompilazione
edelsalvataggiosullascheda- Tipodischedaeportaserialeafve
IDE:INTERFACCIAEFUNZIONALITA'(2/3)
14
IDE:INTERFACCIAEFUNZIONALITA'(3/3)
15
Lafinestraperlacomunicazioneseriale(SerialMonitor):- Numeroporta- pulsanteperinviareunastringa- finestraperscrivereida6da
inviareviaserialeallascheda- da6lefdallascheda- velocitàdellacomunicazione- parametridicomunicazione