L'intervento di Paolo Paolucci durante l'Arduino Day, che si è tenuto il 29 marzo 2014 presso il FabLab Sardegna Ricerche, nella sede di Pula del Parco scientifico e tecnologico della Sardegna.
The document contains Verilog code for a single cycle processor including modules for a program counter, accumulator, ALU, adder, multiplexers, controller, data memory, instruction memory, and a test bench. It describes the design and implementation of the datapath and controller for a simple CPU using Verilog that performs arithmetic and logical operations on data stored in memory locations.
An introduction to Arduino micro-controller platform and C programming meant for the board. Introduction to debugging and hardware specification and limitations of the board.
The document discusses the structure and behavioral modeling of VHDL. It explains the main components of VHDL structure including entity, architecture, package, and configuration. It provides examples of how to write behavioral models for half adder, full adder, AND gate, and D flip flop in VHDL. The document concludes with references for further reading on VHDL design.
The document provides an introduction to programming with Arduino. It explains that Arduino is an open-source hardware and software platform used to build interactive electronic projects. It consists of a microcontroller board that can be programmed and used to read and control sensors, LEDs, motors and more. The document outlines the basic steps to get started which include downloading the Arduino IDE, installing drivers, selecting the board type, and uploading a test "Blink" program to make an LED turn on and off. It also provides explanations of some core electronic components like resistors, LEDs, sensors and describes how to set up a simple temperature sensing project and store the sensor readings in a database.
This document provides an overview of digital input/output drivers and related topics for an ATMEGA 32 microcontroller. It discusses ATMEGA 32 ports and registers for controlling I/O, pull-up/pull-down resistors, switch types and debouncing, LEDs, seven segment displays, and LED matrices. Practical examples are given for interfacing these components through software and external driver chips.
This document provides an overview of the Raspberry Pi, a credit card-sized single board computer developed in the UK to promote basic computer science. It discusses the Raspberry Pi models and specifications, how to set it up with a monitor, keyboard, power supply and SD card loaded with an operating system. Example applications are presented, like using it for programming, electronics projects, and as a web server or media player. Projects developed with Raspberry Pi are also briefly described, such as using it as a tablet, phone or low-cost surveillance camera.
The document contains Verilog code for a single cycle processor including modules for a program counter, accumulator, ALU, adder, multiplexers, controller, data memory, instruction memory, and a test bench. It describes the design and implementation of the datapath and controller for a simple CPU using Verilog that performs arithmetic and logical operations on data stored in memory locations.
An introduction to Arduino micro-controller platform and C programming meant for the board. Introduction to debugging and hardware specification and limitations of the board.
The document discusses the structure and behavioral modeling of VHDL. It explains the main components of VHDL structure including entity, architecture, package, and configuration. It provides examples of how to write behavioral models for half adder, full adder, AND gate, and D flip flop in VHDL. The document concludes with references for further reading on VHDL design.
The document provides an introduction to programming with Arduino. It explains that Arduino is an open-source hardware and software platform used to build interactive electronic projects. It consists of a microcontroller board that can be programmed and used to read and control sensors, LEDs, motors and more. The document outlines the basic steps to get started which include downloading the Arduino IDE, installing drivers, selecting the board type, and uploading a test "Blink" program to make an LED turn on and off. It also provides explanations of some core electronic components like resistors, LEDs, sensors and describes how to set up a simple temperature sensing project and store the sensor readings in a database.
This document provides an overview of digital input/output drivers and related topics for an ATMEGA 32 microcontroller. It discusses ATMEGA 32 ports and registers for controlling I/O, pull-up/pull-down resistors, switch types and debouncing, LEDs, seven segment displays, and LED matrices. Practical examples are given for interfacing these components through software and external driver chips.
This document provides an overview of the Raspberry Pi, a credit card-sized single board computer developed in the UK to promote basic computer science. It discusses the Raspberry Pi models and specifications, how to set it up with a monitor, keyboard, power supply and SD card loaded with an operating system. Example applications are presented, like using it for programming, electronics projects, and as a web server or media player. Projects developed with Raspberry Pi are also briefly described, such as using it as a tablet, phone or low-cost surveillance camera.
Join this video course on udemy . Click here :
https://www.udemy.com/course/mastering-microcontroller-with-peripheral-driver-development/?couponCode=SLIDESHARE
Learn bare metal driver development systems using Embedded C: Writing drivers for STM32 GPIO,I2C,SPI,USART from scratch
Software/Hardware used:
In this course, the code is developed such a way that, It can be ported to any MCU you have at your hand.
If you need any help in porting these codes to different MCUs you can always reach out to me!
The course is strictly not bound to any 1 type of MCU. So, if you already have any Development board which runs with ARM-Cortex M3/M4 processor,
then I recommend you to continue using it.
But if you don’t have any Development board, then check out the below Development boards.
The document describes the architecture and functional units of the Intel 80486 microprocessor. It discusses the following key points in 3 sentences:
The 80486 contains various functional units like the BIU, code prefetch unit, instruction decoding unit, execution unit, FPU, segmentation unit, paging unit, and cache unit. It has register organizations like general purpose registers, segment registers, instruction pointer, and flag registers. The 80486 also includes special purpose registers like segment descriptor cache registers, system level registers, FPU registers, debug registers, and test registers that control various functions.
Microcontrollers are small computers that integrate RAM, ROM, I/O ports and other components onto a single chip. They are used in applications where cost, power and space are critical. The document compares microprocessors and microcontrollers, noting that microcontrollers have all components on one chip while microprocessors have separate chips. It then describes the typical internal blocks of a microcontroller, including the CPU, memory, I/O ports, timers and serial ports. Block diagrams show the connections between these internal components.
A starter guide how to use Microchip MPLAB IDE for PIC microcontrollers and related tools like MPLAB C18, C30 and C32 compilers, and how to MPLAB features to get connected and integrated with programmer/debugger devices and development kits from Microchip.
for more discussion and articles about different microcontroller platforms and tutorials please visit: http://elrayescampaign.blogspot.ca/
O documento resume conceitos fundamentais sobre vetores, matrizes e funções (subrotinas) em linguagem de programação C, incluindo declaração, atribuição, preenchimento e impressão de vetores e matrizes, além de tipos de funções com e sem passagem de parâmetros e retorno de valores.
This document provides an overview of how to use Arduino microcontrollers for beginners. It explains what Arduino is, the basic components and programming structure used in Arduino, and how to get started with coding and hardware setup. The key aspects covered include computers and programming languages, microcontrollers and their applications, Arduino development boards, initial setup steps, basics of Arduino coding like initialization, setup, loop, and user defined functions. It also discusses analog and digital signals, serial communication, and tips for wiring and coding Arduino projects.
Material de apoio das aulas de tutoria de Algoritmos e Estrutura de dados da Universidade Federal de Ouro Preto, Campus João Monlevade. O conteúdo abordado é uma revisão sobre structs na linguagem de programação C.
Introduction to arduino :-
Introduction:
1- What is Micro-Controller ?
2- Microcontroller components.
3- What is Arduino ?
4- Types of Arduino.
5- Arduino uno board.
6- Sensors:
- Digital , Analog sensors.
- Light sensors (IR sensor , Photo resistor).
Coding Structure and examples:
1- Data types and operators.
2- What is “Function” ?
3- Control statements (if , if…else , switch case).
4- Loop statements (while , for , do…while).
5- Common functions.
References:
* Memory types (RAM, ROM, EEPROM, etc).
* Program memory segments.
* Static vs. Dynamic memory allocation.
* Static vs. Dynamic linking.
* Function call with respect to stack, i/p, o/p and i/o parameters and return value.
* Functions types (Synch. vs. ASynch, Reentrant vs. non-Reentrant, Recursive, Inline function vs. function-like macro).
This document discusses combinational circuits. It defines a combinational circuit as a circuit whose output depends only on the current input levels and not previous states. Combinational circuits do not use memory. The document lists three categories of combinational circuits: arithmetic and logical functions, data transmission, and code conversion. It provides adder circuits as examples, defining a half adder and full adder, and including their truth tables.
- Gate level modeling in Verilog uses basic logic gates like AND, OR, NOT etc. as modules to represent digital circuits.
- Common digital components like multiplexers, half adders, full adders can be designed using gate level modeling by connecting the basic gates.
- The document provides examples of gate level Verilog code for a 2:1 multiplexer, half adder, and full adder by instantiating AND, OR, XOR and NOT gates.
Una tarjeta Arduino es una plataforma de hardware de código abierto que conecta el mundo físico con el mundo digital. Fue creada en 2005 por David Cuartielles y Massimo Banzi. Funciona mediante una interfaz de entrada que recibe datos de periféricos y los envía a un microcontrolador para su procesamiento, y luego una interfaz de salida transmite la información procesada a periféricos como pantallas o altavoces. Posee características como entradas analógicas y digitales, un microcontrolador ATMEGA328, al
- Swift Act LLC is an engineering consultancy established in 2017 with legal representation in Egypt and Germany and experience in industries like automotive, IoT, and consumer electronics.
- A state machine is a model used to describe the behavior of systems that can be in one of a finite number of states, triggered by external events to transition between the states.
- State machines have elements like states, transitions, events, and actions and can be represented graphically, tabularly, or textually. They are commonly used in software design and coding.
Introdução a Sistemas Embarcados com Arduino - mini-cursoFelipe Martins
O documento apresenta uma introdução ao sistema Arduino para sistemas embarcados. Em 3 frases:
O documento discute o que são sistemas embarcados e a plataforma Arduino, apresentando suas características de hardware e software, conceitos básicos de eletrônica e microcontroladores, e exemplos de programação e aplicações práticas com sensores e atuadores. O autor é Felipe Nascimento Martins e o documento é licenciado com Creative Commons.
This document outlines an Arduino workshop. It includes an overview of the agenda which involves introductions, checking equipment, experimentation time, and creating personal projects. It then details introducing participants and encouraging collaboration. A list of included parts in the kits is provided. Instructions are given for installing the Arduino software and development environment. Examples are shown for breadboard layouts and code for simple projects like blinking an LED and reading input from a button. Additional experiments suggested include using sensors, LCD displays, motors, and programming an RGB LED with a joystick. Sources for parts, tutorials, and inspiration are listed to encourage continued learning.
MICROPROCESSOR AND INTERFACING
8255A : ppi
8259A : pic
Basics of 8255A PPI
Different I/O mode of 8255A
Basics of 8259A PIC
Different interrupt mode of 8259A
Programming Mode of 8259A
Alfabeto di arduino - lezione 4
Quarta lezione del corso: Alfabeto di Arduino.
Il seguente corso intende fornire le competenze di base per la realizzazione di lezioni di didattica delle robotica nella scuola secondaria di secondo grado.
Il corso ben si adatta a tutti i maker, studenti ed adulti, che per passione nell’elettronica necessitano di un’introduzione all’uso di Arduino.
Il docente che intendesse sviluppare un percorso didattico in cui si desidera realizzare dispositivi elettronici in grado di interfacciarsi col mondo fisico, potrà utilizzare queste lezioni come base per implementare moduli didattici aggiuntivi, pertanto questo corso è da intendersi come il mio personale tentativo di strutturare un percorso iniziale e modellabile a seconda del tipo di indirizzo della scuola. Chi vorrà potrà effettuare miglioramenti su quanto da me scritto.
Il percorso scelto è un estratto delle lezioni svolte durante i miei corsi di elettronica, sistemi ed impianti elettrici.
Nelle slide vi sono cenni teorici di elettrotecnica che non sostituiscono in alcun modo il libro di testo, ma vogliono essere un primo passo per condurre il lettore ad un approfondimento su testi specializzati.
Il corso è basato sulla piattaforma Open Source e Open Hardware Arduino e fa uso dell’Arduino starter kit.
Questa scelta non implica l’adozione di queste slide in corsi che non fanno uso di questo kit, ma è semplicemente una scelta organizzativa per lo svolgimento di questo corso di formazione.
Alle proposte incluse nel kit ho aggiunto ulteriori sperimentazioni. Tutti i componenti possono essere acquistati separatamente.
Ulteriori approfondimenti e risorse a questo corso possono essere trovate sul mio sito personale al seguente link:
http://www.maffucci.it/area-studenti/arduino/
Nella sezione dedicata ad Arduino, sul mio sito personale, oltre ad ulteriori lezioni, di cui queste slide ne sono una sintesi, è possibile consultare un manuale di programmazione, in cui vengono dettagliate le istruzioni. Per rendere pratico l’utilizzo del manuale ne è stata realizzata anche una versione portable per dispositivi mobili iOS e Android, maggiori informazioni possono essere trovate seguendo il link: http://wp.me/p4kwmk-23g
Join this video course on udemy . Click here :
https://www.udemy.com/course/mastering-microcontroller-with-peripheral-driver-development/?couponCode=SLIDESHARE
Learn bare metal driver development systems using Embedded C: Writing drivers for STM32 GPIO,I2C,SPI,USART from scratch
Software/Hardware used:
In this course, the code is developed such a way that, It can be ported to any MCU you have at your hand.
If you need any help in porting these codes to different MCUs you can always reach out to me!
The course is strictly not bound to any 1 type of MCU. So, if you already have any Development board which runs with ARM-Cortex M3/M4 processor,
then I recommend you to continue using it.
But if you don’t have any Development board, then check out the below Development boards.
The document describes the architecture and functional units of the Intel 80486 microprocessor. It discusses the following key points in 3 sentences:
The 80486 contains various functional units like the BIU, code prefetch unit, instruction decoding unit, execution unit, FPU, segmentation unit, paging unit, and cache unit. It has register organizations like general purpose registers, segment registers, instruction pointer, and flag registers. The 80486 also includes special purpose registers like segment descriptor cache registers, system level registers, FPU registers, debug registers, and test registers that control various functions.
Microcontrollers are small computers that integrate RAM, ROM, I/O ports and other components onto a single chip. They are used in applications where cost, power and space are critical. The document compares microprocessors and microcontrollers, noting that microcontrollers have all components on one chip while microprocessors have separate chips. It then describes the typical internal blocks of a microcontroller, including the CPU, memory, I/O ports, timers and serial ports. Block diagrams show the connections between these internal components.
A starter guide how to use Microchip MPLAB IDE for PIC microcontrollers and related tools like MPLAB C18, C30 and C32 compilers, and how to MPLAB features to get connected and integrated with programmer/debugger devices and development kits from Microchip.
for more discussion and articles about different microcontroller platforms and tutorials please visit: http://elrayescampaign.blogspot.ca/
O documento resume conceitos fundamentais sobre vetores, matrizes e funções (subrotinas) em linguagem de programação C, incluindo declaração, atribuição, preenchimento e impressão de vetores e matrizes, além de tipos de funções com e sem passagem de parâmetros e retorno de valores.
This document provides an overview of how to use Arduino microcontrollers for beginners. It explains what Arduino is, the basic components and programming structure used in Arduino, and how to get started with coding and hardware setup. The key aspects covered include computers and programming languages, microcontrollers and their applications, Arduino development boards, initial setup steps, basics of Arduino coding like initialization, setup, loop, and user defined functions. It also discusses analog and digital signals, serial communication, and tips for wiring and coding Arduino projects.
Material de apoio das aulas de tutoria de Algoritmos e Estrutura de dados da Universidade Federal de Ouro Preto, Campus João Monlevade. O conteúdo abordado é uma revisão sobre structs na linguagem de programação C.
Introduction to arduino :-
Introduction:
1- What is Micro-Controller ?
2- Microcontroller components.
3- What is Arduino ?
4- Types of Arduino.
5- Arduino uno board.
6- Sensors:
- Digital , Analog sensors.
- Light sensors (IR sensor , Photo resistor).
Coding Structure and examples:
1- Data types and operators.
2- What is “Function” ?
3- Control statements (if , if…else , switch case).
4- Loop statements (while , for , do…while).
5- Common functions.
References:
* Memory types (RAM, ROM, EEPROM, etc).
* Program memory segments.
* Static vs. Dynamic memory allocation.
* Static vs. Dynamic linking.
* Function call with respect to stack, i/p, o/p and i/o parameters and return value.
* Functions types (Synch. vs. ASynch, Reentrant vs. non-Reentrant, Recursive, Inline function vs. function-like macro).
This document discusses combinational circuits. It defines a combinational circuit as a circuit whose output depends only on the current input levels and not previous states. Combinational circuits do not use memory. The document lists three categories of combinational circuits: arithmetic and logical functions, data transmission, and code conversion. It provides adder circuits as examples, defining a half adder and full adder, and including their truth tables.
- Gate level modeling in Verilog uses basic logic gates like AND, OR, NOT etc. as modules to represent digital circuits.
- Common digital components like multiplexers, half adders, full adders can be designed using gate level modeling by connecting the basic gates.
- The document provides examples of gate level Verilog code for a 2:1 multiplexer, half adder, and full adder by instantiating AND, OR, XOR and NOT gates.
Una tarjeta Arduino es una plataforma de hardware de código abierto que conecta el mundo físico con el mundo digital. Fue creada en 2005 por David Cuartielles y Massimo Banzi. Funciona mediante una interfaz de entrada que recibe datos de periféricos y los envía a un microcontrolador para su procesamiento, y luego una interfaz de salida transmite la información procesada a periféricos como pantallas o altavoces. Posee características como entradas analógicas y digitales, un microcontrolador ATMEGA328, al
- Swift Act LLC is an engineering consultancy established in 2017 with legal representation in Egypt and Germany and experience in industries like automotive, IoT, and consumer electronics.
- A state machine is a model used to describe the behavior of systems that can be in one of a finite number of states, triggered by external events to transition between the states.
- State machines have elements like states, transitions, events, and actions and can be represented graphically, tabularly, or textually. They are commonly used in software design and coding.
Introdução a Sistemas Embarcados com Arduino - mini-cursoFelipe Martins
O documento apresenta uma introdução ao sistema Arduino para sistemas embarcados. Em 3 frases:
O documento discute o que são sistemas embarcados e a plataforma Arduino, apresentando suas características de hardware e software, conceitos básicos de eletrônica e microcontroladores, e exemplos de programação e aplicações práticas com sensores e atuadores. O autor é Felipe Nascimento Martins e o documento é licenciado com Creative Commons.
This document outlines an Arduino workshop. It includes an overview of the agenda which involves introductions, checking equipment, experimentation time, and creating personal projects. It then details introducing participants and encouraging collaboration. A list of included parts in the kits is provided. Instructions are given for installing the Arduino software and development environment. Examples are shown for breadboard layouts and code for simple projects like blinking an LED and reading input from a button. Additional experiments suggested include using sensors, LCD displays, motors, and programming an RGB LED with a joystick. Sources for parts, tutorials, and inspiration are listed to encourage continued learning.
MICROPROCESSOR AND INTERFACING
8255A : ppi
8259A : pic
Basics of 8255A PPI
Different I/O mode of 8255A
Basics of 8259A PIC
Different interrupt mode of 8259A
Programming Mode of 8259A
Alfabeto di arduino - lezione 4
Quarta lezione del corso: Alfabeto di Arduino.
Il seguente corso intende fornire le competenze di base per la realizzazione di lezioni di didattica delle robotica nella scuola secondaria di secondo grado.
Il corso ben si adatta a tutti i maker, studenti ed adulti, che per passione nell’elettronica necessitano di un’introduzione all’uso di Arduino.
Il docente che intendesse sviluppare un percorso didattico in cui si desidera realizzare dispositivi elettronici in grado di interfacciarsi col mondo fisico, potrà utilizzare queste lezioni come base per implementare moduli didattici aggiuntivi, pertanto questo corso è da intendersi come il mio personale tentativo di strutturare un percorso iniziale e modellabile a seconda del tipo di indirizzo della scuola. Chi vorrà potrà effettuare miglioramenti su quanto da me scritto.
Il percorso scelto è un estratto delle lezioni svolte durante i miei corsi di elettronica, sistemi ed impianti elettrici.
Nelle slide vi sono cenni teorici di elettrotecnica che non sostituiscono in alcun modo il libro di testo, ma vogliono essere un primo passo per condurre il lettore ad un approfondimento su testi specializzati.
Il corso è basato sulla piattaforma Open Source e Open Hardware Arduino e fa uso dell’Arduino starter kit.
Questa scelta non implica l’adozione di queste slide in corsi che non fanno uso di questo kit, ma è semplicemente una scelta organizzativa per lo svolgimento di questo corso di formazione.
Alle proposte incluse nel kit ho aggiunto ulteriori sperimentazioni. Tutti i componenti possono essere acquistati separatamente.
Ulteriori approfondimenti e risorse a questo corso possono essere trovate sul mio sito personale al seguente link:
http://www.maffucci.it/area-studenti/arduino/
Nella sezione dedicata ad Arduino, sul mio sito personale, oltre ad ulteriori lezioni, di cui queste slide ne sono una sintesi, è possibile consultare un manuale di programmazione, in cui vengono dettagliate le istruzioni. Per rendere pratico l’utilizzo del manuale ne è stata realizzata anche una versione portable per dispositivi mobili iOS e Android, maggiori informazioni possono essere trovate seguendo il link: http://wp.me/p4kwmk-23g
Quinta lezione del corso: Alfabeto di Arduino.
Il seguente corso intende fornire le competenze di base per la realizzazione di lezioni di didattica delle robotica nella scuola secondaria di secondo grado.
Il corso ben si adatta a tutti i maker, studenti ed adulti, che per passione nell’elettronica necessitano di un’introduzione all’uso di Arduino.
Il docente che intendesse sviluppare un percorso didattico in cui si desidera realizzare dispositivi elettronici in grado di interfacciarsi col mondo fisico, potrà utilizzare queste lezioni come base per implementare moduli didattici aggiuntivi, pertanto questo corso è da intendersi come il mio personale tentativo di strutturare un percorso iniziale e modellabile a seconda del tipo di indirizzo della scuola. Chi vorrà potrà effettuare miglioramenti su quanto da me scritto.
Il percorso scelto è un estratto delle lezioni svolte durante i miei corsi di elettronica, sistemi ed impianti elettrici. Nelle slide vi sono cenni teorici di elettrotecnica che non sostituiscono in alcun modo il libro di testo, ma vogliono essere un primo passo per condurre il lettore ad un approfondimento su testi specializzati.
Il corso è basato sulla piattaforma Open Source e Open Hardware Arduino e fa uso dell’Arduino starter kit. Questa scelta non implica l’adozione di queste slide in corsi che non fanno uso di questo kit, ma è semplicemente una scelta organizzativa per lo svolgimento di questo corso di formazione. Alle proposte incluse nel kit ho aggiunto ulteriori sperimentazioni. Tutti i componenti possono essere acquistati separatamente.
Ulteriori approfondimenti e risorse a questo corso possono essere trovate sul mio sito personale al seguente link:
http://www.maffucci.it/area-studenti/arduino/
Nella sezione dedicata ad Arduino, sul mio sito personale, oltre ad ulteriori lezioni, di cui queste slide ne sono una sintesi, è possibile consultare un manuale di programmazione, in cui vengono dettagliate le istruzioni. Per rendere pratico l’utilizzo del manuale ne è stata realizzata anche una versione portable per dispositivi mobili iOS e Android, maggiori informazioni possono essere trovate seguendo il link: http://wp.me/p4kwmk-23g
Terza lezione del corso: Alfabeto di Arduino.
Il seguente corso intende fornire le competenze di base per la realizzazione di lezioni di didattica delle robotica nella scuola secondaria di secondo grado.
Il corso ben si adatta a tutti i maker, studenti ed adulti, che per passione nell’elettronica necessitano di un’introduzione all’uso di Arduino.
Il docente che intendesse sviluppare un percorso didattico in cui si desidera realizzare dispositivi elettronici in grado di interfacciarsi col mondo fisico, potrà utilizzare queste lezioni come base per implementare moduli didattici aggiuntivi, pertanto questo corso è da intendersi come il mio personale tentativo di strutturare un percorso iniziale e modellabile a seconda del tipo di indirizzo della scuola. Chi vorrà potrà effettuare miglioramenti su quanto da me scritto.
Il percorso scelto è un estratto delle lezioni svolte durante i miei corsi di elettronica, sistemi ed impianti elettrici.
Nelle slide vi sono cenni teorici di elettrotecnica che non sostituiscono in alcun modo il libro di testo, ma vogliono essere un primo passo per condurre il lettore ad un approfondimento su testi specializzati.
Il corso è basato sulla piattaforma Open Source e Open Hardware Arduino e fa uso dell’Arduino starter kit.
Questa scelta non implica l’adozione di queste slide in corsi che non fanno uso di questo kit, ma è semplicemente una scelta organizzativa per lo svolgimento di questo corso di formazione.
Alle proposte incluse nel kit ho aggiunto ulteriori sperimentazioni. Tutti i componenti possono essere acquistati separatamente.
Ulteriori approfondimenti e risorse a questo corso possono essere trovate sul mio sito personale al seguente link:
http://www.maffucci.it/area-studenti/arduino/
Nella sezione dedicata ad Arduino, sul mio sito personale, oltre ad ulteriori lezioni, di cui queste slide ne sono una sintesi, è possibile consultare un manuale di programmazione, in cui vengono dettagliate le istruzioni. Per rendere pratico l’utilizzo del manuale ne è stata realizzata anche una versione portable per dispositivi mobili iOS e Android, maggiori informazioni possono essere trovate seguendo il link: http://wp.me/p4kwmk-23g
Il seguente corso intende fornire le competenze di base per la realizzazione di lezioni di didattica delle robotica nella scuola secondaria di secondo grado.
Il corso ben si adatta a tutti i maker, studenti ed adulti, che per passione nell’elettronica necessitano di un’introduzione all’uso di Arduino.
Il docente che intendesse sviluppare un percorso didattico in cui si desidera realizzare dispositivi elettronici in grado di interfacciarsi col mondo fisico, potrà utilizzare queste lezioni come base per implementare moduli didattici aggiuntivi, pertanto questo corso è da intendersi come il mio personale tentativo di strutturare un percorso iniziale e modellabile a seconda del tipo di indirizzo della scuola. Chi vorrà potrà effettuare miglioramenti su quanto da me scritto.
Il percorso scelto è un estratto delle lezioni svolte durante i miei corsi di elettronica, sistemi ed impianti elettrici. Nelle slide vi sono cenni teorici di elettrotecnica che non sostituiscono in alcun modo il libro di testo, ma vogliono essere un primo passo per condurre il lettore ad un approfondimento su testi specializzati.
Il corso è basato sulla piattaforma Open Source e Open Hardware Arduino e fa uso dell’Arduino starter kit. Questa scelta non implica l’adozione di queste slide in corsi che non fanno uso di questo kit, ma è semplicemente una scelta organizzativa per lo svolgimento di questo corso di formazione. Alle proposte incluse nel kit ho aggiunto ulteriori sperimentazioni. Tutti i componenti possono essere acquistati separatamente.
Ulteriori approfondimenti e risorse a questo corso possono essere trovate sul mio sito personale al seguente link:
http://www.maffucci.it/area-studenti/arduino/
Nella sezione dedicata ad Arduino, sul mio sito personale, oltre ad ulteriori lezioni, di cui queste slide ne sono una sintesi, è possibile consultare un manuale di programmazione, in cui vengono dettagliate le istruzioni. Per rendere pratico l’utilizzo del manuale ne è stata realizzata anche una versione portable per dispositivi mobili iOS e Android, maggiori informazioni possono essere trovate seguendo il link: http://wp.me/p4kwmk-23g
Seconda lezione del corso: Alfabeto di Arduino.
Il seguente corso intende fornire le competenze di base per la realizzazione di lezioni di didattica delle robotica nella scuola secondaria di secondo grado.
Il corso ben si adatta a tutti i maker, studenti ed adulti, che per passione nell’elettronica necessitano di un’introduzione all’uso di Arduino.
Il docente che intendesse sviluppare un percorso didattico in cui si desidera realizzare dispositivi elettronici in grado di interfacciarsi col mondo fisico, potrà utilizzare queste lezioni come base per implementare moduli didattici aggiuntivi, pertanto questo corso è da intendersi come il mio personale tentativo di strutturare un percorso iniziale e modellabile a seconda del tipo di indirizzo della scuola. Chi vorrà potrà effettuare miglioramenti su quanto da me scritto.
Il percorso scelto è un estratto delle lezioni svolte durante i miei corsi di elettronica, sistemi ed impianti elettrici.
Nelle slide vi sono cenni teorici di elettrotecnica che non sostituiscono in alcun modo il libro di testo, ma vogliono essere un primo passo per condurre il lettore ad un approfondimento su testi specializzati.
Il corso è basato sulla piattaforma Open Source e Open Hardware Arduino e fa uso dell’Arduino starter kit.
Questa scelta non implica l’adozione di queste slide in corsi che non fanno uso di questo kit, ma è semplicemente una scelta organizzativa per lo svolgimento di questo corso di formazione.
Alle proposte incluse nel kit ho aggiunto ulteriori sperimentazioni. Tutti i componenti possono essere acquistati separatamente.
Ulteriori approfondimenti e risorse a questo corso possono essere trovate sul mio sito personale al seguente link:
http://www.maffucci.it/area-studenti/arduino/
Nella sezione dedicata ad Arduino, sul mio sito personale, oltre ad ulteriori lezioni, di cui queste slide ne sono una sintesi, è possibile consultare un manuale di programmazione, in cui vengono dettagliate le istruzioni. Per rendere pratico l’utilizzo del manuale ne è stata realizzata anche una versione portable per dispositivi mobili iOS e Android, maggiori informazioni possono essere trovate seguendo il link: http://wp.me/p4kwmk-23g
Prima lezione del corso: Alfabeto di Arduino.
Il seguente corso intende fornire le competenze di base per la realizzazione di lezioni di didattica delle robotica nella scuola secondaria di secondo grado.
Il corso ben si adatta a tutti i maker, studenti ed adulti, che per passione nell’elettronica necessitano di un’introduzione all’uso di Arduino.
Il docente che intendesse sviluppare un percorso didattico in cui si desidera realizzare dispositivi elettronici in grado di interfacciarsi col mondo fisico, potrà utilizzare queste lezioni come base per implementare moduli didattici aggiuntivi, pertanto questo corso è da intendersi come il mio personale tentativo di strutturare un percorso iniziale e modellabile a seconda del tipo di indirizzo della scuola. Chi vorrà potrà effettuare miglioramenti su quanto da me scritto.
Il percorso scelto è un estratto delle lezioni svolte durante i miei corsi di elettronica, sistemi ed impianti elettrici.
Nelle slide vi sono cenni teorici di elettrotecnica che non sostituiscono in alcun modo il libro di testo, ma vogliono essere un primo passo per condurre il lettore ad un approfondimento su testi specializzati.
Il corso è basato sulla piattaforma Open Source e Open Hardware Arduino e fa uso dell’Arduino starter kit.
Questa scelta non implica l’adozione di queste slide in corsi che non fanno uso di questo kit, ma è semplicemente una scelta organizzativa per lo svolgimento di questo corso di formazione.
Alle proposte incluse nel kit ho aggiunto ulteriori sperimentazioni. Tutti i componenti possono essere acquistati separatamente.
Ulteriori approfondimenti e risorse a questo corso possono essere trovate sul mio sito personale al seguente link:
http://www.maffucci.it/area-studenti/arduino/
Nella sezione dedicata ad Arduino, sul mio sito personale, oltre ad ulteriori lezioni, di cui queste slide ne sono una sintesi, è possibile consultare un manuale di programmazione, in cui vengono dettagliate le istruzioni. Per rendere pratico l’utilizzo del manuale ne è stata realizzata anche una versione portable per dispositivi mobili iOS e Android, maggiori informazioni possono essere trovate seguendo il link: http://wp.me/p4kwmk-23g
Teaching within the course "The frontier of the Internet of Things", organized by "Ordine degli Ingegneri della Provincia di Salerno". Lecturing on the subject held "IoT and the Arduino platform" on October 29, 2016
Slide del corso Arduino Base tenuto presso il Museo della Scienza e Tecnologia "Leonardo da Vinci" di Milano.
Argomenti trattati:
- I componenti elettronici di base
- Introduzione alla scheda Arduino
- Le basi della programmazione
- Le comunicazioni seriali
- Input digitali e analogici semplici
- Ricavare input dai sensori
- L’output visivo
- L’output fisico
Iot prototype ( Arduino+electret microphone+esp-01) which analyses and distingueshes sounds. Useful to study and monitor data about noise pollution and road traffic.
Corso di 20 ore sulla piattaforma Arduino. Corso tenuto nelle scuole superiori di San Secondo e Fornovo come corso di aggiornamento per il personale docente. Il corso si suddivide in 5 lezioni dove vengono spiegate più o meno tutte le funzionalità della piattaforma. I file li potete trovare al seguente indirizzo https://github.com/loweherz/ArduinoLessons
- Introduzione
Cosa è arduino?
Cosa non è arduino?
Cosa si può fare?
- Descrizione di Arduino
Breve introduzione storica e curiosità
Hardware generico di Arduino
I vari modelli di Arduino
Hardware di Arduino UNO
Hardware di Arduino Micro
- Segnali
Segnali digitali
Segnali analogici
Sensori ed attuatori
- Software
Il linguaggio di programmazione
Breve descrizione e curiosità
Le funzioni setup() e loop()
L'IDE
Setup e funzioni principali
Codice di esempio incluso nell'IDE
- Hello world: blink sketch (Esempio di output digitale)
L'obiettivo
I LED
Richiami di elettronica
Legge di Ohm
Le resistenze
La breadboard
La basetta millefori
Coding step by step
Test
Modifica di parametri e i relativi effetti
- Button sketch (Esempio di input digitale)
L'obiettivo
Il pulsante
Resistenza di pull-up
Coding
Test
- Comunicazione seriale
- Twilight switch sketch (Esempio di input analogico)
L'obiettivo
La fotoresistenza
Coding
Test
- Variable light sketch (Esempio di output analogico)
L'obiettivo
PWM (Pulse width modulation)
Coding
Test
- Cos'altro posso fare?
Gli shield
Buzzer
LED Infrarossi
Orologio RTC
Display
Moduli a caratteri
Moduli grafici
Motori
Semplici
Passo passo
RFID
Sensori ambientali
Temperatura e umidità
Rilevatore di movimento
Sonar
Wifi
Internet of things
Relay elettromagnetici
- Esempi di progetti curiosi trovati su internet
- Siti di riferimento
Progetto PRELuDE PRotocollo ELaborazione Dati per l'Efficienza Energetica in ...Sardegna Ricerche
L'intervento di E. Quacquero, G. Desogus (Università di Cagliari - Sotacarbo - Politecnico di Milano) in occasione dell'evento "Più efficienza: obiettivo COMUNE" che si è svolto il 21 dicembre 2018 a Carbonia.
PRELuDE - La valutazione del comfort termoigrometrico con sensori non invasiviSardegna Ricerche
La presentazione di Roberto Ricciu (Università di Cagliari) in occasione dell'evento finale del progetto PRELuDE che si è tenuto online il 26 marzo 2021.
PRELuDE - Rete di sensori innovativi per il monitoraggio energetico e control...Sardegna Ricerche
La presentazione di Gianluca Gatto (Università di Cagliari) in occasione dell'evento finale del progetto PRELuDE che si è tenuto online il 26 marzo 2021.
PRELuDE - La simulazione degli interventi migliorativi per il padiglione Mand...Sardegna Ricerche
La presentazione di Caterina Frau e Marco Pittaluga (SOTACARBO) in occasione dell'evento finale del progetto PRELuDE che si è tenuto online il 26 marzo 2021.
PRELuDE - Il Building Information Modelling per la gestione dell'audit energe...Sardegna Ricerche
La presentazione di Emanuela Quaquero e Giulia Rubiu (Università di Cagliari) in occasione dell'evento finale del progetto PRELuDE che si è tenuto online il 26 marzo 2021.
Il progetto PRELuDE, attività e risultati raggiuntiSardegna Ricerche
La presentazione di Giuseppe Desogus (Università di Cagliari) in occasione dell'evento finale del progetto PRELuDE che si è tenuto online il 26 marzo 2021.
PROGETTO PRELuDE3 PRotocollo ELaborazione Dati per l'Efficienza Energetica in...Sardegna Ricerche
Presentazione a cura di Antonello Sanna (Università di Cagliari) in occasione del kick-off meeting del PROGETTO PRELuDE3 che si è tenuto il 4 maggio 2018 a Cagliari.
PROGETTO PRELuDE3 PRotocollo ELaborazione Dati per l'Efficienza Il progetto P...Sardegna Ricerche
Presentazione a cura di Roberto Ricciu (Università di Cagliari) in occasione del kick-off meeting del PROGETTO PRELuDE3 che si è tenuto il 4 maggio 2018 a Cagliari.
La soluzione di agrivoltaico dinamico_Insolight - Sardegna_Raphaël SonneySardegna Ricerche
Intervento curato da Raphaël Sonney di Insolight, focalizzato sui benefici che le tecnologie dell’Agrivoltaico possono portare all'agricoltura, quando la coltura viene posta al centro della progettazione.
Presentazione introduttiva di Alessandra Scognamiglio presidente dell'Associazione Italiana Agrivoltaico Sostenibile (AIAS) e coordinatrice della task force “Agrivoltaico Sostenibile” dell'ENEA
L’impronta idrica della produzione di idrogeno elettrolitico su larga scala -...Sardegna Ricerche
Natalia Pierozzi di Rina S.p.A., interviene al webinar con una presentazione sull’impronta idrica della produzione di idrogeno elettrolitico su larga scala
Produzione di elettrodi migliorata per un’elettrolisi più efficiente - Albert...Sardegna Ricerche
Alberto Bucci di Jolt Solutions interviene al webinar con una presentazione dedicata alla produzione di elettrodi migliorata per un’elettrolisi più efficiente
Soluzioni per il trattamento dell’acqua destinata all’elettrolisi - Giulia Sp...Sardegna Ricerche
Giulia Sporchia di Cannon Artes S.p.A. interviene al webinar con una presentazione dedicata alle soluzioni tecnologiche per il trattamento dell’acqua destinata all’elettrolisi
Soluzioni digitali per la flessibilità del sistema energetico - M.Repossi _ L...Sardegna Ricerche
Diapositive di Mattia Repossi e Lorenzo Farina, Senior Project Manager e Project Engineer di STAM S.r.l. dedicate ad alcune delle soluzioni digitali in grado di aumentare la flessibilità del sistema energetico e alle applicazioni digitali per l'efficientamento energetico.
Digitalizzazione del sistema energetico - M.GawronskaSardegna Ricerche
Diapositive di Malgorzata Gawronska della Piattaforma Energie rinnovabili di Sardegna Ricerche dedicate ad introdurre il tema della digitalizzazione del sistema energetico nel contesto del panorama europeo.
“Cogenerazione ad alto rendimento: opportunità per le PMI e la PA, aggiorname...Sardegna Ricerche
L'intervento di Fabio Minchio dedicato alla cogenerazione ad alto rendimento con un focus sulle opportunità per le PMI e la PA e agli aggiornamenti normativi, ai benefici e alle criticità
“Cogenerazione ad alto rendimento: opportunità per le PMI e la PA, aggiorname...
Il cuore di Arduino: Un sistema di sviluppo basato su microcontrollore Atmel AVR - Paolo Paolucci
1. Un sistema di sviluppo basato su
microcontrollore Atmel AVR
PaoloP
http://forum.arduino.cc/index.php?action=profile;u=58300
2. Argomenti
Architettura generale dei microcontrollori
Ambiente di sviluppo integrato
Caratteristiche e elementi di Arduino UNO
Principali caratteristiche del ATmega328P
Concetti di porte e pin del microcontrollore
Istruzioni per comandare i pin del microcontrollore
7. Cos’è Arduino?
Piattaforma di sviluppo open source
Open Source Hardware
Open Source Software
Economica e facilmente reperibile
Espandibile tramite «shield»
12. Prima di Arduino…
Computer
• Software
• Eclipse
• AVR Studio 4
•Porte
• Serial
• Parallel
• USB
Programmatore
• Interfaccia
• JTAG/ICE
• ISP
•Programmatore
• Bit-Bang
• ICSP
• AVRISP Mk II
Microcontrollore
• Versione
•DIP
•SOIC
•QFN
•Funzioni
•ADC/DAC
•PWM
•USB
13. Arduino Uno R3
LED
Connettore
USB
Jack Alimentazione
Connettori Pin DigitaliPulsante di Riavvio
Microcontrollore
AVR
ATmega328P
Connettori Pin Analogici
Connettori alimentazione
Convertitore
USB-Seriale
14. Arduino IDE (integrated development environment)
L'ambiente di sviluppo integrato
Arduino rende semplice la scrittura
di codice e caricarlo sulla scheda.
Funziona su Windows, Mac OS X e
Linux.
L'ambiente è scritto in Java e basato
su Processing, avr-gcc e altri software
open source.
15. Il linguaggio di Arduino
Linguaggio C/C++
Sintassi semplificata da funzioni di supporto alla programmazione
Astrazione dei nomi dei pin, passaggio ai numeri
Facile da imparare e potente
Facilità di riutilizzo del codice C per altri progetti
Librerie scritte in C/C++
Moltissimo codice di esempio (Tutorial – Playground)
Moltissime librerie già pronte (GitHub – GoogleCode)
16. Parole chiave del C
auto double int struct
break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while
17. Le funzioni di Arduino
Digital I/O
pinMode()
digitalWrite()
digitalRead()
Analog I/O
analogReference()
analogRead()
analogWrite() - PWM
Due only
analogReadResolution()
analogWriteResolution()
Advanced I/O
tone()
noTone()
shiftOut()
shiftIn()
pulseIn()
Time
millis()
micros()
delay()
delayMicroseconds()
Math
min()
max()
abs()
constrain()
map()
pow()
sqrt()
Trigonometry
sin()
cos()
tan()
Random Numbers
randomSeed()
random()
Bits and Bytes
lowByte()
highByte()
bitRead()
bitWrite()
bitSet()
bitClear()
bit()
External Interrupts
attachInterrupt()
detachInterrupt()
Interrupts
interrupts()
noInterrupts()
Communication
Serial
Stream
USB (Leonardo and Due only)
Keyboard
Mouse
18. http://it.wikipedia.org/wiki/Microcontrollore
Microcontrollore
In elettronica digitale il microcontrollore o microcontroller o MCU (MicroController
Unit) è un dispositivo elettronico integrato su singolo chip, nato come evoluzione
alternativa al Microprocessore ed utilizzato generalmente in sistemi embedded ovvero
per applicazioni specifiche di controllo digitale.
ANALOG
INPUTS
19. AVR
Sviluppati da Atmel nel 1996
Famiglia di Microcontrollori RISC
(reduced instruction set computer)
Istruzioni a lunghezza fissa, accesso alla memoria di tipo load-store con
32 registri general-purpose
Pipeline a due stadi per velocizzare l’esecuzione
Esecuzione della maggior parte delle istruzioni in un solo ciclo di clock
Fino a 12 volte più veloce di una architettura standard CISC
Architettura Harvard
22. AVR
Memoria Flash programmabile, RAM, EEPROM interne
Sistema di programmazione interno (ISP)
Varietà di periferiche: I/O digitali, ADC, Timer, UART, RTC timer, pulse width
modulator (PWM)…
Funzionamento fino a 20MHz
Ampia gamma di tensioni di funzionamento: da 1.8 V a 6.0 V.
Package variabile da 8 pin fino a 64 pin
Famiglie
ATtiny25-45-85, ATtiny24-44-84, ATtiny2313-4313 ...
ATmega88, ATmega168, ATmega328P ...
26. Tensione di lavoro dei pin
I Microcontrollori sono fondamentalmente dei dispositivi digitali dove
l’informazione è ‘codificata’ in due stati discreti:
HIGH or LOW (stato logici: 1 oppure 0)
Tensioni
5 V (per HIGH)
0 V (per LOW)
3.3 V (per HIGH)
0 V (per LOW)
28. Porte e Pin del Microcontrollore
Costituiscono il canale di
comunicazione del flusso di
informazioni da e per il
microcontrollore
Es. PORTB
• Pins PB0 – PB7
• Possono non essere contigui
• Spesso sono bidirezionali
34. Direzione dei dati nelle Porte e Pin
Input
Quando si prendono le informazioni dal mondo esterno (sensori)
verso la MCU
Output
Quando si invia un segnale per cambiare lo stato di un qualcosa di
esterno alla MCU (accendere o spegnere un led, un motore, etc.)
all’accensione o al Reset i pin sono impostati di default come input
da programma è possibile cambiare la direzione e lo stato dei pin in
qualsiasi momento
ogni porta I/O ha associati dei registri di memoria
35. Registri di memoria I/O
SREG: Status Register
SP: Stack Pointer Register
GIMSK: General Interrupt Mask Register
GIFR: General Interrupt Flag Register
MCUCR: MCU General Control Register
MCUSR: MCU Status Register
TCNTO: Timer/Counter 0 Register
TCCR0A: Timer/Counter 0 Control Register A
TCCR0B: Timer/Counter 0 Control Register B
OCR0A: Timer/Counter 0 Output Compare
Register A
OCR0B: Timer/Counter 0 Output Compare
Register B
TIMSK0: Timer/Counter 0 Interrupt Mask
Register
TIFR0: Timer/Counter 0 Interrupt Flag Register
EEAR: EEPROM Address Register
• EEDR: EEPROM Data Register
• EECR: EEPROM Control Register
• PORTB: PortB Data Register
• DDRB: PortB Data Direction Register
• PINB: Input Pins on PortB
• PORTD: PortD Data Register
• DDRD: PortD Data Direction Register
• PIND: Input Pins on PortD
• SPI I/O Data Register
• SPI Status Register
• SPI Control Register
• UART I/O Data Register
• UART Status Register
• UART Control Register
• UART Baud Rate Register
• ACSR: Analog Comparator Control and Status
Register
Nell'architettura dei calcolatori un registro è una piccola parte di memoria utilizzata per velocizzare l'esecuzione dei programmi fornendo un accesso
rapido ai valori usati più frequentemente, tipicamente, i valori correntemente in uso in una determinata parte di un calcolo. La maggior parte delle
moderne architetture dei computer (RISC, o più genericamente "architetture load-store") è basata su un'architettura a pipeline che trae beneficio dal
limitare l'accesso in memoria alle sole istruzioni load e store, utilizzando soltanto registri e costanti per l'esecuzione di tutte le altre istruzioni.
36. Registri della Porta B
PORTB: PortB Data Register
DDRB: PortB Data Direction Register
PINB: Pins Input on PortB
Bit 7 6 5 4 3 2 1 0
Bit 7 6 5 4 3 2 1 0
Bit 7 6 5 4 3 2 1 0
37. Registri di una Porta
Ciascuna Porta I/O ha associati 3 registri:
1. DDRx (dove “x” è A, B, C…)
Data Direction Register Port x
Determina quali pin della porta sono input (0) e quali sono output (1)
DDRB = 0x02; /* imposta il secondo pin della porta B come output” */
2. PORTx
Port Driver Register
PORTB = 0x02; /* imposta il secondo pin della porta a livello alto e azzera gli altri */
3. PINx
Port Pins Registers
Legge contemporaneamente lo stato di tutti e 8 i pin della porta
unsigned short int x;
x = PINB; /* Scrive lo stato della porta B nella variabile x */
39. Struttura di UNO sketch
Un programma su Arduino == ‘sketch’
Deve obbligatoriamente avere:
setup()
loop()
setup()
Configura il modo dei pin
loop()
Corpo principale del programma
impostato come ciclo infinito
Come un while(1) {…}
Dov’è la funzione main() ?
/* Blink
Turns on an LED on for one second, then off for one
second, repeatedly.
This example code is in the public domain.
*/
int led = 13;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is
the voltage level)
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by
making the voltage LOW
delay(1000); // wait for a second
}
40. MAIN.cpp
#include <Arduino.h>
int main(void) {
init();
#if defined(USBCON)
USBDevice.attach();
#endif
setup();
for (;;) {
loop();
if (serialEventRun)
serialEventRun();
}
return 0;
}
Semplificazioni dell’IDE
nasconde:
Main.cpp
Prototipi delle funzioni
Gestione degli #include
41. Impostare la direzione di un pin
Con Arduino IDE
pinMode(pin_no., dir)
Es. impostare il pin 3 di Arduino (PD3) come uscita
pinMode(3, OUTPUT);
Nota: un pin alla volta
Supponiamo di voler impostare i pin 3, 5 e 7 (PD3, PD5 e PD7) come
uscite.
Come possiamo fare?
42. Esempio 1
Arduino IDE Registri
Impostare i pin 3, 5 e 7 (PD3, PD5 e PD7) come uscite
pinMode(3, OUTPUT);
pinMode(5, OUTPUT);
pinMode(7, OUTPUT);
DDRD = 0b10101000;
or
DDRD = 0xA8;
or
DDRD | = 1<<PD7 | 1<<PD5 | 1<<PD3;
43. PINMODE()
void pinMode (uint8_t pin, uint8_t mode) {
uint8_t bit = digitalPinToBitMask(pin);
uint8_t port = digitalPinToPort(pin);
volatile uint8_t *reg, *out;
if (port == NOT_A_PIN) return;
// JWS: can I let the optimizer do this?
reg = portModeRegister(port);
out = portOutputRegister(port);
if (mode == INPUT) {
uint8_t oldSREG = SREG;
cli();
*reg &= ~bit;
*out &= ~bit;
SREG = oldSREG;
} else if (mode == INPUT_PULLUP) {
uint8_t oldSREG = SREG;
cli();
*reg &= ~bit;
*out |= bit;
SREG = oldSREG;
} else {
uint8_t oldSREG = SREG;
cli();
*reg |= bit;
SREG = oldSREG;
}
}
44. Uso di un pin per accendere un LED
Accendiamo un LED connesso al pin 7 di
Arduino (PD7) (occhio alla resistenza!)
Come si deve impostare la direzione del pin
7 (PD7)?
pinMode(__, ______);
Accendiamo il LED
digitalWrite(7, HIGH);
Spegniamo il LED
digitalWrite(7, LOW);
ATmega328
Arduino
pin 7
(PD7)
45. Esempio 2
Arduino Registri
Impostare i pin 0 e 1 (PD0 e PD1) come uscite con un livello del segnale
ALTO
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
digitalWrite(0, HIGH);
digitalWrite(1, HIGH);
DDRD = b00000011;
PORTD = b00000011;
o
DDRD = 0x03;
PORTD = 0x03;
oppure
DDRD | = 1<<PD1 | 1<<PD0;
PORTD | = 1<<PD1 | 1<<PD0;
46. Digitalwrite()
void digitalWrite (uint8_t pin, uint8_t val) {
uint8_t timer = digitalPinToTimer(pin);
uint8_t bit = digitalPinToBitMask(pin);
uint8_t port = digitalPinToPort(pin);
volatile uint8_t *out;
if (port == NOT_A_PIN) return;
// If the pin that support PWM output, we need to turn it off
// before doing a digital write.
if (timer != NOT_ON_TIMER) turnOffPWM(timer);
out = portOutputRegister(port);
uint8_t oldSREG = SREG;
cli();
if (val == LOW) {
*out &= ~bit;
} else {
*out |= bit;
}
SREG = oldSREG;
}
47. PIN, sensori e resistenze di pull-up - 1
Usiamo un pulsante come sensore
Vogliamo leggere lo stato del pulsante
Qual è la direzione da attribuire al pin 3
di Arduino (PD3)?
pinMode(__, ______);
Qual è la tensione sul pin PD3 quanto il
contatto è chiuso?
Qual è la tensione sul pin PD3 quanto il
contatto è aperto?
Indeterminata!
ATmega328
Arduino
pin 3
(PD3)
48. PIN, sensori e resistenze di pull-up - 2
Forniamo una tensione sul pin PD3 per
determinare lo stato attivando la resistenza di
pull-up
Impostiamo PD3 come input-pullup:
pinMode(3, INPUT);
digitalWrite(3 ,HIGH);
oppure
pinMode(3, INPUT_PULLUP);
Che tensione leggero sul pin PD3
quanto il pulsante è aperto?
VTG
Che tensione leggero sul pin PD3
quanto il pulsante è chiuso?
GND
ATmega328
PD3
VTG= +5V
0
1
49. PIN, sensori e resistenze di pull-up - 3
Spegniamo la resistenza di pull-up
Dopo aver impostato PD3 come input:
pinMode(3, INPUT);
…….
digitalWrite(3, LOW);
ATmega328
PD3
VTG= +5V
0
1
50. PIN, sensori e resistenze di pull-up - 4
‘Weak Drive’
Settando il pin come input e attivando la
resistenza di pull-up interna la corrente in
uscita dal pin è debole.
Il valore tipico delle resistenze di pull-up per
l’ATmega328 è tra i 20 e 50 kΩ
ATmega328
PD3
VTG= +5V
0
1
iweak
51. Esempio 3
Arduino Registri
Impostare i pin 0 e 1 (PD0 e PD1) come ingresso attivando la resistenza
di pull-up
pinMode(0, INPUT);
pinMode(1, INPUT);
digitalWrite(0, HIGH);
digitalWrite(1, HIGH);
DDRD = 0; // all PORTD pins inputs
PORTD = b00000011;
o
PORTD = 0x03;
oppure
DDRD & = ~(1<<PD1 | 1<<PD0);
PORTD | = (1<<PD1 | 1<<PD0);
oppure
pinMode(0, INPUT_PULLUP);
pinMode(1, INPUT_PULLUP);