Sei sulla pagina 1di 17

Ricordami

Login

Password dimenticata? Nome utente dimenticato? Registrati

Blog

Tutorial Arduino

Audio Azionamenti Comunicazione Display Elettronica Prodotti Gioblu Programmazione Robotica Sensori

Forum Chat

Community

Cerca nel sito

Tutorial Arduino - Programmazione


Questa sezione contiene tutorial e guide orientate alla programmazione di Arduino e ai linguaggi come C, C++ e Processing.
Qui puoi svariate informazioni utili per i primi passi con la programmazione.
Grazie alla passione di voi utenti presente un vasto database di strumenti intellettuali. Fai la tua parte ; )
Inserisci un articolo!

Arduino Basic
Tutorials - Programmazione
Luned 26 Marzo 2012 19:27
Scritto da Mario A

Chi come me ha scoperto i computer nei primi anni 80, si ricorder di un piccolo computer il Sinclair ZX80 con linguaggio Basic:

Sinclair ZX80
CPU

NEC PD780C a 3,25 MHz


(clone dello Zilog Z80A )

ROM

4 kB

RAM

1 kB

Tastiera incorporata s (alfanumerica, 40 tasti, a sfioramento)


Risoluzioni video

solo testo, 3222 caratteri, monocromatico

Queste erano le sue caratteristiche e per chi nostalgico ho scovato un interperete Basic per Arduino che replica in buona parte il funzionament
Si deve scaricare lo sketch da qui: http://ec2-122-248-210-243.ap-southeast-1.compute.amazonaw s.com/mediawiki/images/2/20/Tinybasic.pde
Far partire l'IDE Arduino , se si usa la versione 1.0 opportuno rinominare lo sketch con l'estensione .ino , poi caricarlo e fare l'upload sulla scheda.
Ci si deve procurare, per chi non ne dotato, di un emulatore terminale tipo Putty e creare una sessione come il Serial Monitor dell 'IDE di Arduino,
caricare la sessione appena creata e apparir questa schermata:

a questo punto l'interprete Basic gi operativo e potete inserire gi alcune righe per provarlo, prendendo spunto da quelle che vedete.
Se volete avere una piccola guida del linguaggio TinyBasic la trovate qui:

Come eliminare l'errore PAGEL programmando Attiny85/84


Tutorials - Programmazione
Venerd 16 Marzo 2012 17:56
Scritto da Mario A

Chi ha avuto l'occasione di programmare i famosi Attiny specialmente 84 e 85 , seguendo la guida:


http://ww w.gioblu.com/tutorials/programmazione/214-guida-alluso-dellattiny85
si imbattuto nel fatidico errore:
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85
alla fine del processo di programmazione, credendo che non sia andato a buon fine, ma non affatto vero perch solo una segnalazione di
una mancanza nel file di configurazione avrdude.conf che collocato nella cartella:
.... \Arduino\arduino-1.0\hardw are\tools\avr\etc
per ovviare al problema basta editare il file descritto sopra, previo un salvataggio del file originale con un altro nome ( per non avere problemi
se si sbaglia) e aprirlo con un editor tipo Wordpad, cercare la parola Attiny85 una volta che viene evidenziata, con il cursore scendere di
alcune righe fino a:
chip_erase_delay = 4500;
ed aggiungere su una nuova riga:
# aggiunti per eliminare il bug di compilazione.
pagel = 0xB3;
bs2 = 0xB4;
ripetete la stessa operazione cercando la parola Attiny84, salvate il file editato e il gioco fatto.
Tutto questo l'ho ricavato seguendo una discussiione sul forum ufficiale di Arduino Italiano.

Let's GO PIC cap. 7 "i canali analogici della Micro-GT"


Tutorials - Programmazione
Mercoled 02 Novembre 2011 00:57
Scritto da Marco

Let's GO PIC!!!

cap.7

Micro-GT I.D.E e Micro-Gt mini "i canali analogici".


Eccoci finalmente giunti al passaggio obbligato dello studio dei segnali analogici che costituir anche un salto di qualit del programmatore.

Eccoci finalmente giunti al passaggio obbligato dello studio dei segnali analogici che costituir anche un salto di qualit del programmatore.
Vedremo alcuni esempi di interfacciamento dei pi comuni sensori e ragioneremo insieme sull'hardw are necessario e la configurazione
necessaria per la corretta lettura del valore in campo. Come al solito l'articolo verr esposto con una descrizione semplice e didattica alla
portata di tutti ma non trascuriamo di aver ben compreso le edizioni precedenti del tutorial. Non mi resta che augurare buona lettura di
questo settimo capitolo di Let's GO PIC !!!.
Convertitori A/D integrati nel PIC 876A e 877A.

Il processore di riferimento 16F877A possiede ben 8 canali analogici indicati in viola nell'immagine sottostante.
Per default i convertitori analogici digitali sono abilitati come anche la funzione cattura e confronta abbinata ai medesimi pin.

Nel processore 16F876A il numero dei canali e' ridotto a 5 come rappresentato nell'immagine sottostante.

Per entrambi i processori le masse sono indicate in nero, le alimentazioni in rosso e l'ingresso del segnale di reset in marrone.
I due processori sono entrambi alloggiabili nel textool della Micro-GT Versatile I.D.E. mentre nella Micro-GT mini presentata a partire dal
capitolo 10 sar alloggiabile solo il PIC 16F876A e i compatibili 18FXXX a 28 pin.
Teniamo ben presente che citare dei registri inesistenti nel sorgente "C" comporta un errore di compilazione, come spesso accade in un
sorgente per 877A compilato per 876A in merito alla definizione del PORTD e del PORTE.
L'architettura e' grosso modo comune quindi se si usano solo risorse comuni le compilazione deve andare a buon fine, se questo non
avvenisse cliccare sulla sezione "Configure" -> " Select Device" dove imposteremo 16F877A. Vedi immagine.

Fatta questa manovra la compilazione deve andare a buon fine. Il problema protrebbe presentarsi perche' la routine standard che fornisco in
questo articolo e' applicabile a pi tipi di processore e potrebbe portarsi dietro delle impostazioni di un vostro precedente uso. A tal
proposito "settaggiADC.h ", il commento spiega chiaramente quando escludere queste righe dalla compilazione.
I registri di configurazione dei canali analogici si chiamano ADCON1 e ADCON2 entrambi a 8 bit, e vanno settati bit per bit a seconda
dell'applicazione.
I registri si si trovano per entrambi i microcontrollori agli stessi indirizzi interni.
ADCON0 al Bank0 indirizzo 1FH.
ADCON1 al Bank1 indirizzo 9FH
Per creare la comparazione per effetto barbraph che vogliamo in questo articolo sono sufficienti i comandi sottostanti.
Tabella riassuntiva dei registri al BANK 0
1eh risultato del_byte alto
1fh ADCON0

ADCS1

del

convertitore analogico digitale

ADCS0 CHS2 CHS1

CHS2

GO/DONE - ADON

0000_000

Tabella riassuntiva dei registri al BANK 1.

9Eh ADRESL A/D

result register parte bassa

9Fh ADCON1 ADFM -

PCFG3 PCFG2 PCFG1 PCFG0

0--,0000

Il data book del 16F877A spiega come impostare questo PIC a pag. 111.
/*
ADCON1
1 - ADFM Risultato giustificato a destra (0 SX)
0 - non usato
0 - non usato
0 - non usato
0 - PCFG3 Tutti ingressi analogici
0 - PCGG2 Vref
0 - PCFG1 -Vdd
0 - PCFG0 -Vss
*/
/*
ADCON0
0 - ADCS1 Frequenza oscillatore
1 - ADCS0 Fosc/8 (1/4Mhz=0.23uS .25*8=2uS minimo 1.6uS)
0 - CHS2
0 - CHS1 Seleziona l'ingresso dell'ADC
0 - CHS0
0 - ADGO Mettere a 1 per inizio conversione 0 -Fine conversione.
0 - non usato
0 - ADON ON/OFF ADC (1 ON) Quando ON assorbe potenza
*/
.
Collegamenti all'hardware della Micro-GT versatile I.D.E.
.Nella prossima immagine vediamo la posizione dei connettori della scheda da collegare tramite cavo Flat. La tensione a 5 Volt e la massa
risultano gi internamente connesse ai trimmer multigiro.

Sul lato textool lo schema elettrico, che mostra dove effettuare le connessioni e' il seguente, dove si nota la presenza dei due jumper JPA e
JPB che consentono il collegamento dei canali analogici AN6 e AN7 quando sullo zoccolo e' inserito il 16F877A. Tali jumper sono un errore
hardware quando invece sia inserito il microcontroller 16F876A.

In questo firmw are e' collegato solo il primo trimmer multigiro al primo canale analogico, ovvero il pin 2 del 877A e al medesimo del 876A.

Collegare via cavo flat il connettore stripline maschio SV15 al connettore SV16.
Per quanto riguarda l'impostazione dei collegamenti nel nuovo modello "Micro-GT mini" presentato qui in anteprima, sar necessario collegare
esternamente tramite cavo flat i pin indicati in figura ai cursori dei 5 canali analogici acquisibili.

Architettura interna.
L'architettura interna del PIC 16F876A e' visibile nel diagramma a blocchi:

posto la pagina n 111 del data book ufficiale di MicroChip in cui sono spiegate le funzionalit dei singoli bit dei registri interessati.

.
.

.
Analisi del firmware.
Scarica il progetto MpLab ADC soglia_rampa -> ADCsoglia(1).zip
Scompattate il file zip nella cartella "picproject" che avete creato sulla cartella documenti (come suggerito fin dal primo episodio del nostro
corso online). Cliccate sul file progetto, ovvero quello con l'icona rossa e estensione .mcp (MicroChip project).
Se la vostra istallazione di MpLab e' corretta automaticamente verra' aperto tutto il progetto.
Nel box del progetto dovete vedere questi files:

Il mio stile di programmazione impone una sudduvisione modulare (su file distinti) delle principali funzioni e intestazioni "header" in modo da
rendere pi agevoli le eventuali azioni di debug.
Nel precedente progetto vediamo 3 files standard delay.c, delay.h, alw ays.h, che per agevolare la portatilita' suggerisco tenere la medesima
cartella del progetto. I rimanenti file sono a cura del programmatore.
Vediamo cosa contengono:
ADCsoglia.c => Contiene il main program, gestisce le chiamate alle preimpostazioni e alle funzioni di lettura.
settaggiADC.h =>contiene l'impostazione dei FUSE e i settaggi dei registri TRIS e PORT riferiti al processore 877
ADC.h => contiene la funzione leggi_ad(char canale) che legge il valore dal campo.
Vediamo il contenuto dei file nel dettaglio
Contenuto del file "ADCsoglia.c"
/**********************************************
* G-Tronic Robotic *
* Let's GO PIC!!! cap.7 *
* Piattaforma: Micro-GT PIC versatile IDE *
* 16F877A - 16F876A *
* CONFRONTO DI UN CANALE ANALOGICO *
* tramite un potenziometro *
**
* Corso ZIP febbraio 2011 *
**
*********************************************/
#include
#include "delay.h"
//#include "delay.c"
#include "ADC.h"

#define smin 150

#define smax 1023


#include "settaggiADC.h"

//Routine principale...

void main(){
settaggiADC();
unsigned int valore1;
unsigned int incr;

//TRISB=0x00; //PORTB tutte uscite


//TRISA=0xFF; //PORTA tutti ingressi per gli A/D

ADCON1 = 0b10000000;
incr=(smax-smin)/8;
w hile(1){
valore1=leggi_ad(0);
if((valore1>=smin)&&(valore1<=smin+incr)){
PORTB=0b00000001;
}
if((valore1>=smin+incr)&&(valore1<=smin+2*incr)){
PORTB=0b00000011;
}
if((valore1>=smin+2*incr)&&(valore1<=smin+3*incr)){
PORTB=0b00000111;
}
if((valore1>=smin+3*incr)&&(valore1<=smin+4*incr)){
PORTB=0b00001111;
}
if((valore1>=smin+4*incr)&&(valore1<=smin+5*incr)){
PORTB=0b00011111;
}
if((valore1>=smin+5*incr)&&(valore1<=smin+6*incr)){
PORTB=0b00111111;
}
if((valore1>=smin+6*incr)&&(valore1<=smin+7*incr)){
PORTB=0b01111111;
}
if((valore1>=smin+7*incr)&&(valore1<=smax)){
PORTB=0b11111111;
}

}
}
Contenuto del file "settaggiADC.h"
void settaggiADC(){
__CONFIG (HS & W DTDIS & PWRTDIS & BORDIS & LVPDIS & DUNPROT & WRTEN & DEBUGDIS & UNPROTECT);
//ADCON1=0b00000111; //DISABILITA GLI INGRESSI ANALOGICI: 00000111 (CIOE' 7) DISABILITA TUTTI GLI INGRESSI
//CMCON=0b00000111; //DISABILITA I COMPARATORI ANALOGICI
TRISA=0XFF;
TRISB=0;
TRISC=0;
TRISD=0; //Attenzione questo registro non esiste nel 16F876 darebbe errore di compilazione
TRISE=0;
PORTA=0;
PORTB=0;
PORTC=0;
PORTD=0;
PORTE=0;
}
Contenuto del file "ADC.h"
/ *************************************************************
* G-Tronic Robotic *
* MODULO PER LA LETTURA DEI CANALI ANALOGICI *
* Piattaforma Micro-GT Versatile IDE *
* processore :16F877A *
* chiamare la fz leggi_ad(n); *
* done n: numero del canale in ingresso *
**
**
**************************************************************/
int leggi_ad(char canale)
{
int valore;
ADCON0 = (canale << 3) + 0xC1; // abilita il convertitore ADC, RC osc.
DelayUs(10); //Ritardo per dare modo all'A/D di stabilizzarsi
ADGO = 1; //Fa partire la conversione
w hile(ADGO)
continue; //Attende che la conversione sia completa
valore=ADRESL; //Parte bassa del risultato
valore= valore + (ADRESH<<8); //Parte alta del risultato
return(valore);
}
Fase di simulazione.
La simulazione del software e' stata eseguita con RealPIC simulator, come per i precedenti capitoli. Nelle prossime immagini vediamo come
settare il simulatore.

Nella colonna dei comandi grafici, posti nella colonna di sinistra, selezioniamo il diodo rosso, e seguiamo i tabs che si attivano in modo da
impostare il LedBar per il PORT B. Dopo avere impostato il primo led come RB0, clicchiamo sullo stesso e seguiamo le indicazioni "next follow
down" che in automatico numera i rimanenti fino a RB7.
La manopola graduata posta sotto il LED (colonna dei comandi grafici) attiva invece la barra analogica "Analog 0" che scorrendo da sinistra a
destra fornir alla variabile analogica il valore tra 0 e 1023.
Il firmw are, caricato nel simulatore eseguir le comparazioni softw are ed accender i led in modalit Bargraph.
Video tutorial.
Nei video che seguono, postati su youtube potete vedere le lezioni tenute in orario serale (o forse e' meglio dire notturno) al centro
culturale ZIP (zona industriale di Padova). Mi scuso se in alcuni di questi filmati posso avere l'aspetto e l'espressione un po' stanca ma queste
lezioni si tengono in orario molto tardo e dopo lunghe giornate lavorative. Inoltre sono girate con il metodo "buona la prima !!!" e senza
premeditare che in quella serata si sarebbe girato un video tutorial.
Nel video vediamo un'importante spiegazione del concetto di banda morta.

Ecco un video in cui spiego il collegamento dell'hardw are relativo al 16F876A per il pilotaggio di un servomotore tramite segnale analogico.

ecco il firmw are (file.hex sviluppato relativo a questo esercizio) -> mini1servo.zip
Nel prossimo video tutorial vediamo la spiegazione di alcuni passaggi softw are ben commentati da Marco e Fabio relativamente alla funzione
leggi_AD( ) contenuto nel file ADC.h

Seconda parte con simulazione su RealPic Simulator

Impostazione della sensibilita' della barra analogica (variabili di controllo)

Ecco una prima variabile del programma di acquisizione dei segnali analogici.

Vediamo altri esempi di programmazione in HiTec/C16 relativo al controllo dei servomotori. (lezione zip febbraio 2011)

seconda prova con analogici per il controllo dei servomotori con Micro-GT

Come al solito ricordo a tutti gli interessati che dispongo a magazzino dei circuiti stampati sia della Micro-GT versatile IDE che della nuova
versione ridotta Micro-GT mini. Chi avesse interesse ad avere qualche esemplare mi contatti via mail all'indirizzo ad.noctis@gmail.com
Spero di aver dato a tutti un nuovo strumento con cui divertirsi.
Buona visione e buona sperimentazione a tutti.
Marco Gottardo as ad.noctis

This opera is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 Italy License .

Altri articoli...
Visualizzatore grafico con Processing - Grapher 1.0
Usare l'Arduino UNO come programmatore ISP
Guida all'uso dell'Attiny85 con Arduino
Arduino Mini + Regolatore di tensione 7805
Inizio

Gioblu Robotics 2010 - 2012 Sitemap privacy

gioscarab@gmail.com Via Savona 123 20146 Milano MI PI 06977550968 C odice fiscale


MTLGNN86S09F205F

Gioblu BO T Ser v er online dal 10 A prile 2010 - 3 1 9 .2 3 2 V isite - 1 .0 2 7 .1 7 5 P agine v isualizzate - 1 8 2 .3 0 9 V isitatori unici - 5 3 6 utenti attiv i

Potrebbero piacerti anche