martedì 11 dicembre 2012
Debian ed Ubuntu Full Screen in VirtualBox
Una volta installato Debian ed Ubuntu dentro una macchina virtuale Debian purtroppo la risoluzione massima dello schermo e' bloccata al 1024x768 e con i monitor moderni non e' certo un bel vedere
m-a prepare
per godere della modalita' Full-Screen si deve procedere come segue
Ubuntu
sudo apt-get install virtualbox-guest-dkms
e poi riavviare la macchina virtuale
Debian
ovviamente con Debian e' piu' complicato
apt-get install build-essential module-assistantm-a prepare
in seguito si monta il cd delle Guest Addition e si lancia VBoxLinuxAdditions.run
si riavvia ed il gioco e' fatto
con Gnome3 della Debian Testing la macchina virtuale funziona piuttosto male...non ci sono problemi per gli altri DE
venerdì 7 dicembre 2012
Driver ADB su Windows
Dato che uso normalmente Linux ho scoperto solo adesso che per programmare Android in Windows e' necessario installare i driver Adb prima di poter interagire con il telefono
Per i telefoni Android i driver sono contenuti all'interno del software Kies che include sia i driver che il software per l'aggiornamento del firmware e la gestione del telefono
Per altri telefoni, come l'Ideos della Huawei, sono disponibili i driver presso il sito del costruttore
giovedì 6 dicembre 2012
Text to Speech (TTS) con Pico
Una delle funzioni meno utilizzate (ma anche delle piu' interessanti) e' quella di poter utilizzare delle API per poter enunciare una stringa
Il motore di TTS di default su Android e' Pico e non sempre ci sono tutti i linguaggi installati ..quindi se si vuole che il telefono parli in inglese non ci sono problemi ma se si vuole una lingua un po' piu' esotica va scaricata a parte
Gli esempi su come usare Pico sono gia' inclusi negli esempi dei developer di Android quindi non c'e' molto da fare se non usare il sistema
La voce e' piuttosto metallica e robotica rispetto ad altri motori TTS ma c'e' da dire che i file sono estremamente compatti
un primo metodo per testare TTS e' il seguente ma di fatto non e' utile in casi reali di programmazione
---------------------------------------------------------------
package com.example.tts;
import android.os.Bundle;
import android.app.Activity;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
public class MainActivity extends Activity implements OnInitListener{
private TextToSpeech talker;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
talker = new TextToSpeech(this, this);
say("Luca Innocenti");
}
public void say(String text2say){
talker.speak(text2say, TextToSpeech.QUEUE_FLUSH, null);
}
public void onInit(int status) {
//say("Luca Innocenti");
}
@Override
public void onDestroy() {
if (talker != null) {
talker.stop();
talker.shutdown();
}
super.onDestroy();
}
}
---------------------------------------------------------------
Il secondo metodo e' decisamente piu' interattivo
---------------------------------------------------------------
package com.example.tts2;
import java.util.Locale;
import android.os.Bundle;
import android.app.Activity;
import android.speech.tts.TextToSpeech;
//import android.speech.tts.TextToSpeech.OnInitListener;
import android.util.Log;
import android.view.Menu;
import android.widget.Button;
import android.widget.EditText;
import android.view.View;
public class MainActivity extends Activity implements TextToSpeech.OnInitListener {
private Button pulsante;
private EditText txtv;
private TextToSpeech tts;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pulsante = (Button) findViewById(R.id.button1);
txtv = (EditText) findViewById(R.id.editText1);
tts = new TextToSpeech(this, this);
pulsante.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View arg0) {
speakOut();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public void onInit(int status) {
// TODO Auto-generated method stub
if (status == TextToSpeech.SUCCESS) {
int result = tts.setLanguage(Locale.US);
if (result == TextToSpeech.LANG_MISSING_DATA
|| result == TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS", "This Language is not supported");
} else {
pulsante.setEnabled(true);
speakOut();
}
} else {
Log.e("TTS", "Initilization Failed!");
}
}
private void speakOut() {
// TODO Auto-generated method stub
String text = txtv.getText().toString();
tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
}
}
Il motore di TTS di default su Android e' Pico e non sempre ci sono tutti i linguaggi installati ..quindi se si vuole che il telefono parli in inglese non ci sono problemi ma se si vuole una lingua un po' piu' esotica va scaricata a parte
Gli esempi su come usare Pico sono gia' inclusi negli esempi dei developer di Android quindi non c'e' molto da fare se non usare il sistema
La voce e' piuttosto metallica e robotica rispetto ad altri motori TTS ma c'e' da dire che i file sono estremamente compatti
un primo metodo per testare TTS e' il seguente ma di fatto non e' utile in casi reali di programmazione
---------------------------------------------------------------
package com.example.tts;
import android.os.Bundle;
import android.app.Activity;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
public class MainActivity extends Activity implements OnInitListener{
private TextToSpeech talker;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
talker = new TextToSpeech(this, this);
say("Luca Innocenti");
}
public void say(String text2say){
talker.speak(text2say, TextToSpeech.QUEUE_FLUSH, null);
}
public void onInit(int status) {
//say("Luca Innocenti");
}
@Override
public void onDestroy() {
if (talker != null) {
talker.stop();
talker.shutdown();
}
super.onDestroy();
}
}
---------------------------------------------------------------
---------------------------------------------------------------
package com.example.tts2;
import java.util.Locale;
import android.os.Bundle;
import android.app.Activity;
import android.speech.tts.TextToSpeech;
//import android.speech.tts.TextToSpeech.OnInitListener;
import android.util.Log;
import android.view.Menu;
import android.widget.Button;
import android.widget.EditText;
import android.view.View;
public class MainActivity extends Activity implements TextToSpeech.OnInitListener {
private Button pulsante;
private EditText txtv;
private TextToSpeech tts;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pulsante = (Button) findViewById(R.id.button1);
txtv = (EditText) findViewById(R.id.editText1);
tts = new TextToSpeech(this, this);
pulsante.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View arg0) {
speakOut();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public void onInit(int status) {
// TODO Auto-generated method stub
if (status == TextToSpeech.SUCCESS) {
int result = tts.setLanguage(Locale.US);
if (result == TextToSpeech.LANG_MISSING_DATA
|| result == TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS", "This Language is not supported");
} else {
pulsante.setEnabled(true);
speakOut();
}
} else {
Log.e("TTS", "Initilization Failed!");
}
}
private void speakOut() {
// TODO Auto-generated method stub
String text = txtv.getText().toString();
tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
}
}
--------------------------------------------------------
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_marginBottom="66dp"
android:ems="10" >
<requestFocus />
</EditText>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/editText1"
android:layout_centerHorizontal="true"
android:layout_marginTop="46dp"
android:text="Button" />
</RelativeLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_marginBottom="66dp"
android:ems="10" >
<requestFocus />
</EditText>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/editText1"
android:layout_centerHorizontal="true"
android:layout_marginTop="46dp"
android:text="Button" />
</RelativeLayout>
Android su HTC TyTN II
Avevo gia' montato Android su un HTC TyTN II oltre tre anni fa ma all'epoca conoscevo molto poco di Android e quindi non avevo apprezzato la cosa anche perche' con un processore Arm da 400 MHz Android funziona piuttosto male,mettiamoci anche uno schermo nato per il pennino e non per il touch per rendere il tutto ingestibile
Il telefono era, quando usci' nel 2007, un ottimo oggetto rilasciato pero' con Windows Mobile 6 (aggiornabile al 6.1) con GPS, Bluetooth, WiFi, SdCard ed altro con uno schermo da 240x320 da 2.8 pollici. Non so quale fosse il prezzo (a me e' arrivato come rotto e sono riuscito a renderlo funzionante) ma doveva essere comparabile all'IPhone di oggi
Per inserire Android sul telefono si possono seguire le istruzioni riportate a questo link
Una volta lanciato il file haret. compare il boot di Android che sostituisce completamente Windows Mobile
Il tempo di boot e' piuttosto lento (oltre 2 minuti) ed al termine si entra in Android 2.1
Interrogato via Adb il sistema operativo funziona completamente (si entra in shell e si puo' fare il pull dei file) , si denota solo molto ritardo sensibile sull'interfaccia touch tale da renderlo sostanzialmente inservibile. La rete Wireless ed il GPS funzionano
Purtroppo non e' disponibile la funzione di screenshot mediante DDMS per cui sono dovute ricorrere ad una fotocamera
Il telefono era, quando usci' nel 2007, un ottimo oggetto rilasciato pero' con Windows Mobile 6 (aggiornabile al 6.1) con GPS, Bluetooth, WiFi, SdCard ed altro con uno schermo da 240x320 da 2.8 pollici. Non so quale fosse il prezzo (a me e' arrivato come rotto e sono riuscito a renderlo funzionante) ma doveva essere comparabile all'IPhone di oggi
Per inserire Android sul telefono si possono seguire le istruzioni riportate a questo link
Una volta lanciato il file haret. compare il boot di Android che sostituisce completamente Windows Mobile
Il tempo di boot e' piuttosto lento (oltre 2 minuti) ed al termine si entra in Android 2.1
Interrogato via Adb il sistema operativo funziona completamente (si entra in shell e si puo' fare il pull dei file) , si denota solo molto ritardo sensibile sull'interfaccia touch tale da renderlo sostanzialmente inservibile. La rete Wireless ed il GPS funzionano
Purtroppo non e' disponibile la funzione di screenshot mediante DDMS per cui sono dovute ricorrere ad una fotocamera
mercoledì 5 dicembre 2012
Installazione NDK per Android
E' sufficiente scarica il file zip della piattaforma per cui e' richiesto lo sviluppo dal sito android ndk e successivamente decomprimerlo in una directory a piacere. Si aggiorna quindi la Path con il comando
export PATH=${PATH}:/home/luca/android_ndk
ed il gioco e' fatto
OCR in Linux con Tesseract
Ho iniziato ad usare dei software OCR nel lontano 1992 su un computer 486 DX/25 con un vetusto software Omniscan su Windows 3.1
sudo apt-get install libpng12-dev
sudo apt-get install libjpeg62-dev
sudo apt-get install libtiff4-dev
sudo apt-get install zlib1g-dev
./configure
make
make install
ldconfig
Il tempo e' passato ed adesso sono disponibili dei software molto piu' perfomanti e gratuiti; per Linux ho provato ad utilizzare il software Tesseract che attualmente e' sponsorizzato da Google e si puo' scaricare da questo link
Esistono diversi pacchetti gia' compilati per tesseract ma visto che ci siamo sono partito dalla compilazione dei sorgenti
per prima cosa e' necessario eseguire
sudo apt-get install autoconf automake libtoolsudo apt-get install libpng12-dev
sudo apt-get install libjpeg62-dev
sudo apt-get install libtiff4-dev
sudo apt-get install zlib1g-dev
successivamente vanno compilate ed installate le librerie del progetto Leptonica tramite la classica sequenza configure/make/make install
terminata la fase preparatoria si scaricano i file dei sorgenti di Tesseract (i piu recenti sono qui) ed il file per il linguaggio di cui si desidera la conversione (italiano o inglese)
make
make install
ldconfig
terminata la compilazione si spacchetta il file del linguaggio in una directory (per esempio /home/luca/tessdata) ed al termine nella directory devono essere presenti file tipo ita.cube.bigram oppure ita.traindata
si indica quindi al programma dove sono ubicati i file della lingua mediante
export TESSDATA_PREFIX=/home/luca
e si procede da linea di comando ad effettuare una convesione OCR mediante il comando
tesseract immagine.tif testo_scansionato -l ita
(dove con -l ita si indica di utilizzare i file di conversione della lingua italiana, il risultato viene inserito nel file testo_scansionato.txt)
per testare il programma si possono scaricare le immagini di test da questo link
Attenzione: il programma accetta come input solo file TIF e solo con particolari caratteristiche prive di canale alpha. Nel caso di errato riconoscimento caratteri e' probabile che il file immagine non sia nel formato richiesto. Il formato richiesto e' di almeno 200 dpi con una profondita' di colore di 1 bit (quindi immagine a bianco e nero)
Come esempio di prova e' stata usata questa immagine
che ha come risultato della conversione il seguente testo
--------------------------------------------------------------------------------
~ Visual Linking allows users to join tables without having to understand
the underlying table structure.
ReportSmith is available on MS-Windows and works with ASK INGRES/Net for
Windows to provide client/server reporting for ASK INGRES data.
Seeing is believing - - - so we've enclosed a Report Sampler that shows the types
of impressive reports available from ReportSmith.
We're so sure that ReportSmith will answer your reporting requirements that
we're offering a full development copy for $139~~over 50% off the regular price
-~so you can start generating new reports today!
Simply fill out the enclosed reply card, include your credit card number, mail it
back in the postage paid envelope, and we'll ship you a single-user copy of
ReportSmith today!
Once you've had a chance to use this product, I'm sure you'll see why it was
voted Byte Best of Comdex "Finalist" Award, and Windows Sources "Experts Pick"
Award.
For the reporting tool you've been waiting for... send in our reply card or call
1-800-446-4737 today! This special offer ends December 15th.
Regards,
George Kellar
Director Marketing
North America Operations
The ASK Group, Inc.
e questa e' la ottima conversione in formato testo (gli errori ci sono ma sono abbastanza marginali e principalmente derivati da una cattiva interpretazione dell'apostrofo
------------------------------------------------------------------
ll punto di vista di ARPAT sulla prevenzione, enunciato formalmente fin dal i996, considera
elemento portante della propria politica gestionale la tutela della salute e sicurezza di tutti gli
operatori. Questo nel profondo convincimento che la salute sia un bene primario di cui ognuno ha
diritto, in ogni ambito di vita e di lavoro.
Le azioni intraprese da ARPAT per mettere in pratica questa scelta gestionale si sono concretizzate,
in primo luogo, nellîndividuazione del responsabile del servizio di prevenzione e protezione e,
successivamente, nellîndividuazione di tutte quelle ligure che rientrano nel “Sistema prevenzione”
dellfiAgenzia: fra queste, il medico competente ed autorizzato, che fin dal 1997 opera a fianco del
responsabile del servizio di prevenzione e protezione.
Le attività di quesfiultimo e del medico competente sono fra loro complementari e sinergiche,
Mentre il responsabile del servizio di prevenzione e protezione individua e propone le misure di
prevenzione primaria atte ad eliminare i rischi per la salute e la sicurezza degli operatori
dell’Agenzia (che sono legate ad interventi rivolti in particolare a strutture, impianti, attrezzature ed
organizzazione del lavoro), il medico competente rivolge la sua attenzione alla persona, mettendo in
pratica la sorveglianza sanitaria attraverso Feffettuazione di accertamenti sanitari preventivi e
periodici e l’espressione dei giudizi di idoneità allo svolgimento della mansione specifica di ogni
operatore delPAgenzia, Congiuntamente le due figure operano, invece, per Feffettuazione della
valutazione dei rischi e la formazione del personale delFAgenzia.
ll lavoro portato avanti fino ad oggi dal responsabile del servizio di prevenzione e protezione e dal
medico competente ha portato ARPAT ad accrescere progressivamente e sostanzialmente il suo
impegno nei riguardi delle norme di igiene e sicurezza. La situazione iniziale in cui si trovava
l'Agenzia al momento della sua costituzione, cosi come evidenziato nei primi documenti
predisposti e resi noti dal Direttore generale, vedeva oscillare, infatti, fra il 20 ed il 60% la
percentuale di adeguatezza alle norme tecniche (per le parti strutturali ed impiantistiche delle varie
sedi); d’altra parte anche il controllo sanitario dei lavoratori costituiva Feccezione alla regola,
risultando operativo, nel i996, solo in alcune realtà particolari.
Grazie all’impegno di tutta l’Agenzia, con il supporto tecnico del servizio di prevenzione e
protezione e del medico competente, la situazione iniziale e stata oggetto di un radicale mutamento.
Gli interventi tesi al miglioramento delle strutture e degli impianti, resisi necessari a seguito della
valutazione dei rischi, hanno portato alla realizzazione ed acquisizione di nuove sedi per il
Dipartimento provinciale di Siena, il Servizio sub-provinciale di Empoli, la Sede centrale
delFAgenzia a Firenze, Fimmobile “nuovo” per il dipartimento provinciale di Prato; di “locali
aggiuntivi” per i Dipartimenti provinciali di Livorno ed Arezzo ed a trasformazioni strutturali
(ampia quella del Dipartimento provinciale di Firenze), grazie anche agli interventi previsti dal
Progetto alimenti, per quanto riguarda la maggior parte delle altre sedi.
La politica degli investimenti adottata ha permesso, da un lato, di acquisire attrezzature specifiche
finalizzate alla sicurezza (annadi aspirati per sostanze pericolose, generatori di gas, cappe chimiche
e biologiche ecc.), dall’altro di procedere ad un rinnovamento delle dotazioni strumentali finalizzato
alla sicurezza prima di tutto, oltre che al miglioramento delle prestazioni.
Accanto a queste attività hanno preso vita progetti di formazione ed informazione interna del
personale ARPAT, attraverso incontri informativi gestiti dal responsabile del servizio di
prevenzione e protezione presso ogni sede e corsi di formazione su argomenti generali e specifici, ai
quali hanno preso parte finora circa 600 operatori (pronto soccorso, prevenzione incendi, rischio
cancerogeno e rischio biologico).
Contemporaneamente si e intrapreso un percorso di collaborazione con le altre Agenzie per la
protezione ambientale presenti sul territorio nazionale per accelerare il processo di miglioramento
grazie alla condivisione delle esperienze maturate fino ad ora, percorso che ha avuto recentemente
la sua manifestazione più concreta nel Seminario di Asti del giugno 2000 sullo stato di attuazione
del “sistema sicurezza nelle Agenzie”.
------------------------------------------------------------------
ll punto di vista di ARPAT sulla prevenzione, enunciato formalmente fin dal i996, considera
elemento portante della propria politica gestionale la tutela della salute e sicurezza di tutti gli
operatori. Questo nel profondo convincimento che la salute sia un bene primario di cui ognuno ha
diritto, in ogni ambito di vita e di lavoro.
Le azioni intraprese da ARPAT per mettere in pratica questa scelta gestionale si sono concretizzate,
in primo luogo, nellîndividuazione del responsabile del servizio di prevenzione e protezione e,
successivamente, nellîndividuazione di tutte quelle ligure che rientrano nel “Sistema prevenzione”
dellfiAgenzia: fra queste, il medico competente ed autorizzato, che fin dal 1997 opera a fianco del
responsabile del servizio di prevenzione e protezione.
Le attività di quesfiultimo e del medico competente sono fra loro complementari e sinergiche,
Mentre il responsabile del servizio di prevenzione e protezione individua e propone le misure di
prevenzione primaria atte ad eliminare i rischi per la salute e la sicurezza degli operatori
dell’Agenzia (che sono legate ad interventi rivolti in particolare a strutture, impianti, attrezzature ed
organizzazione del lavoro), il medico competente rivolge la sua attenzione alla persona, mettendo in
pratica la sorveglianza sanitaria attraverso Feffettuazione di accertamenti sanitari preventivi e
periodici e l’espressione dei giudizi di idoneità allo svolgimento della mansione specifica di ogni
operatore delPAgenzia, Congiuntamente le due figure operano, invece, per Feffettuazione della
valutazione dei rischi e la formazione del personale delFAgenzia.
ll lavoro portato avanti fino ad oggi dal responsabile del servizio di prevenzione e protezione e dal
medico competente ha portato ARPAT ad accrescere progressivamente e sostanzialmente il suo
impegno nei riguardi delle norme di igiene e sicurezza. La situazione iniziale in cui si trovava
l'Agenzia al momento della sua costituzione, cosi come evidenziato nei primi documenti
predisposti e resi noti dal Direttore generale, vedeva oscillare, infatti, fra il 20 ed il 60% la
percentuale di adeguatezza alle norme tecniche (per le parti strutturali ed impiantistiche delle varie
sedi); d’altra parte anche il controllo sanitario dei lavoratori costituiva Feccezione alla regola,
risultando operativo, nel i996, solo in alcune realtà particolari.
Grazie all’impegno di tutta l’Agenzia, con il supporto tecnico del servizio di prevenzione e
protezione e del medico competente, la situazione iniziale e stata oggetto di un radicale mutamento.
Gli interventi tesi al miglioramento delle strutture e degli impianti, resisi necessari a seguito della
valutazione dei rischi, hanno portato alla realizzazione ed acquisizione di nuove sedi per il
Dipartimento provinciale di Siena, il Servizio sub-provinciale di Empoli, la Sede centrale
delFAgenzia a Firenze, Fimmobile “nuovo” per il dipartimento provinciale di Prato; di “locali
aggiuntivi” per i Dipartimenti provinciali di Livorno ed Arezzo ed a trasformazioni strutturali
(ampia quella del Dipartimento provinciale di Firenze), grazie anche agli interventi previsti dal
Progetto alimenti, per quanto riguarda la maggior parte delle altre sedi.
La politica degli investimenti adottata ha permesso, da un lato, di acquisire attrezzature specifiche
finalizzate alla sicurezza (annadi aspirati per sostanze pericolose, generatori di gas, cappe chimiche
e biologiche ecc.), dall’altro di procedere ad un rinnovamento delle dotazioni strumentali finalizzato
alla sicurezza prima di tutto, oltre che al miglioramento delle prestazioni.
Accanto a queste attività hanno preso vita progetti di formazione ed informazione interna del
personale ARPAT, attraverso incontri informativi gestiti dal responsabile del servizio di
prevenzione e protezione presso ogni sede e corsi di formazione su argomenti generali e specifici, ai
quali hanno preso parte finora circa 600 operatori (pronto soccorso, prevenzione incendi, rischio
cancerogeno e rischio biologico).
Contemporaneamente si e intrapreso un percorso di collaborazione con le altre Agenzie per la
protezione ambientale presenti sul territorio nazionale per accelerare il processo di miglioramento
grazie alla condivisione delle esperienze maturate fino ad ora, percorso che ha avuto recentemente
la sua manifestazione più concreta nel Seminario di Asti del giugno 2000 sullo stato di attuazione
del “sistema sicurezza nelle Agenzie”.
Iscriviti a:
Post (Atom)
Debugger integrato ESP32S3
Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede nell'ID USB della porta Jtag. Nel modulo...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...