Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
La famiglia di schede Arduino mette a disposizione sul web una vasta serie di librerie per moltissimi chips di
diversi tipi e funzioni, generalmente sviluppate come classi C++.
I controllers SYEL della serie Pineapple e Puzzle sono predisposti per eseguire codice nativo C++ Arduino.
Poiché il codice delle librerie di Arduino è in linguaggio C++ questo viene compilato e linkato separatamente
e gira nel task PLC, condividendo con il resto del progetto le variabili volute.
Prendiamo in considerazione l’ esempio più semplice possibile, ovvero “Blink” che fa lampeggiare un’ uscita
dell’ apparecchiatura.
Vedremo come gestire il codice Arduino e come integrarlo con il resto del progetto, sviluppato con Proteus
in ambiente grafico con linguaggio C.
extern "C"
{
volatile U32 time; //variabile usata in Page1 del progetto
extern U32 pippo; //variabile usata in Page1 del progetto
}
// the setup function runs once when you press reset or power the board
void setup()
{
pinMode(13, OUTPUT); // initialize digital pin 13 as an output.
}
Nell’ esempio si fa riferimento al pin 13. I pin usabili con pinMode, digtalWrite e digitalRead sono definiti
solo per apparecchiature PINEAPPLE e PINEAPPLE800. Per altri hardware dovremo usare altre funzioni.
Queste funzioni non fanno riferimento ai pin di Arduino ma consentono di utilizzare qualsiasi pin del
controller facendo riferimento al numero del pin e al numero della porta. A tale scopo occorre
evidentemente conoscere la mappatura degli i/o del controller che usiamo.
Usando le librerie di Arduino occorre tener conto inoltre del fatto che esistono diverse versioni di Arduino,
con CPU diverse e mappature degli i/o diverse, per cui potrà essere necessario ritoccare il codice per farlo
corrispondere al nostro hardware.
La soluzione più semplice è di utilizzare la scheda Syel Pineapple che è pin-to-pin compatibile con
Arduino UNO, per cui non è necessaria alcuna modifica al codice Arduino.
Il Pineapple base consiste in una scheda basata su un processore CORTEX-M3 con 32 MBytes di
SDRAM, 512 KBYTES di FLASH, 96 KBYTES di SRAM, 2 KBYTES di EEPROM, un realtime clock, un
display TFT 480x272 pixels a 32000 colori con touch-screen.
Un connettore posteriore garantisce la piena compat ibilità pin-to-pin con ARDUINO-UNO ( 31 pins ) , ed è
espanso per supportare altre funzioni e periferiche:
Oltre al display TFT, le periferiche aggiunte sono: un controller ETHERNET 10-100, Un controller WI-FI, un
nodo CAN-CANOPEN, una seconda porta RS-232 ed una porta RS-485, un lettore di carte SD-MMC, un
lettore di penne USB, un lettore di carte NFC, un accelerometro a 3 assi, una porta BLUETOOTH e una
sonda termometrica.
Il connettore USB può essere usato per alimentare la scheda ( 5 Volts. )
Sul connettore posteriore possono essere montate schede Arduino-compatibili ed altre schede dedicate
che aggiungono altre funzioni.
compatibilità Arduino:
14 pin interrupt
8 pin ADC
4 pin PWM
4 pin SPI
2 pin I2C
2 pin COM1 TTL
rispetto ad Arduino:
6 pin non hanno interrupt
2 pin non hanno PWM
funzioni aggiunte:
5 pin interrupt
7 pin GPIO
2 pin COM2 TTL
2 pin RS-485
2 pin CAN
6 pin ETHERNET(*)
1 pin DAC
periferiche abilitate per default all' accensione:
LCD DISPLAY (480 x 272 pixels)
TOUCH SCREEN (resistive)
SD MEMORY (SD-SDHC)
USB PEN PORT
RS-485 PORT
CAN NODE PORT
ETHERNET/WIFI(*) (selezionabile da config)
periferiche assegnabili ed abilitabili via software (sui 27 pins GPIO **)
27 digital inputs (27 pins)
27 digital outputs (27 pins)
19 edge interrupt (19 pins)
4 PWM (4 pins)
6 ADC 12 bit (8 pins)
2 COM RS-232 (TTL)(4 pins)
1 DAC (1 pin)
altre periferiche sui pins del connettore gestibili via software(**)
1 Hi speed SPI master-slave (3 + n pins)
1 I2C master-slave (2 pins)
altri dispositivi gestibili via software (non sui pins del connettore)
1 NFC card reader (internal spi)
1 BLUETOOTH master-slave (internal spi)
1 ACCELEROMETER 3 AXES (internal spi)
2 TEMPERATURE SENSORS (internal spi + external spi)
(*) La porta Ethernet richiede un connettore ethernet esterno RJ-45.
(**)Livelli di tensione sui pins del connettore:
Ingressi digitali: 0-3.3V (5 Volts tolerant)
Uscite digitali: 0-3.3V
Ingressi analogici: 0-3.3V (v.ref)
Uscita analogica: 0-3.3V.
Porte RS-232: TTL 0.3.3V (DATA_IN 5V. tolerant)
Le porte RS-232 richiedono all' occorrenza un RS-232/TTL converter.
Un progetto importato da Arduino contiene in genere un colloquio con la console seriale usando le funzioni:
Serial.begin()
Serial.read()
Serial.print()
Serial.println()
arduino_serial.h"
SPI.cpp"
WIRE.cpp"
SERIALS.h"