Java o C lang

Ciao a tutti
Dubbio atroce: per creare un app android é necessario utilizzare Java per il layout e C per le info da inviare al modulo BT? Cioè bisogna scrivere un linguaggio misto, con Android Studio o Eclipse? Questo perché Arduino accetta il C/C++, ma come si fa a creare più activity collegate tra loro usando il C/C++, se non c'è un Manifest da nessuna parte che "ordina" la sequenza di visualizzazione delle activity?

Grazie

Il IDE di Arduino funziona con C/C++. Ci sono anche un ambiente di sviluppo per programmare il Controller ATmega328 con Basic.

Un altra cosa é quello che manda informazioni o dati a Arduino. l' interfaccia deve essere fatta in modo che funzioni elettricamente e il protocollo e il senso dei Byte inviati devono essere quelli che sono programmati. Con cosa mandi i dati é un altra cosa.

Se ricevi un Email e riesci a leggerla sul Tuo PC sotto Windows non é detto che non é scritto su linux, mac, android o altro.

La app la programmi come vuoi, devi e sai programmarla, basta che i dati escano come lo Sketch se li aspetta.

Ciao Uwe

Credo non mi sono spiegato Uwe. E ti chiedo di spiegare anche in maniera più semplice per i novelli come me.
Se scrivo un app con Android Studio la scrivo in Java. Posso scrivere anche in C contemporaneamente?

Puoi scriverlo in qualsiasi linguaggio che suporta Android. Non avendo esperienza in Android non so dirti le possibilitá che ci sono.
La APP é una cosa e lo sketch é un altra cosa totalmente differente.

Ciao Uwe

Per il semplice fatto che Arduino non accetta istruzioni java ma solo C, l'app però deve essere Java per Android, quindi le istruzioni per Arduino da inviare devono essere C, altrimenti come le esegue?

@Thomasfr: Credo tu stia facendo MOLTA confusione ...
... le ISTRUZIONI sono quelle con cui scrivi il programma, quelli che trasmetti sono DATI che NON hanno nulla a che vedere con come scrivi il programma.

Su Android scriverai in Java, su Arduino in C/C++ e i due ambienti si scambieranno dei DATI dei quali deciderai tu il formato.

Guglielmo

Si Guglielmo, credo di avere della confusione non solo nell'esporre il mio problema e hai ragione. Le istruzioni da caricare su Arduino via cavo seriale collegato al PC è chiaro che debbano essere in C, dal momento che nel IDE di Arduino si usa questo linguaggio in seguito convertito come macchina.
Ma in seguito ad aver caricato lo sketch in C e considerato che il PC lo spengo definitivamente, volendo inviare e ricevere istruzioni dall'app android scritta in JAVA, dove non ci sono traccia di dati in C, come farà mai Arduino a ricevere e inviare istruzioni se usa un linguaggio diverso da quello dell'app?
Vi chiedo di essere pazienti e scusate se vi stresso ma da masters come voi mi aspetto anche semplicità nello spiegare.

grazie

Non hai ancora capito che non invii ISTRUZIONI! Non invii CODICE! Invii DATI! Ora, se mandi "ABC" oppure "123", cosa c'entra che questi dati siano stati generati in C/Java/Python/ASM/Brainfuck e ricevuti in un altro??? Sempre quelli sono! L'importante che vengano inviati in un formato noto e decodificabile.

Spiega per favore come realizzeresti un app per smartphone Android che spenga e accenda un led su Arduino via bluetooth.
Mi riporti per favore le stringhe da mettere nella mia Activity main.

Come esempio didattico, inviati una stringa, tipo ACCENDI per accendere e SPEGNI per spegnere.

@Thomasfr: come ti ho già detto e come ti ha appena detto SukkoPera, tu stai confondendo due cose, il linguaggio con cui si programmano i due oggetti (che alla fine viene comunque tradotto in qualche altra cosa dal compilatore, quindi Java, C, basic, ecc. ... alla fine sempre codici macchina diventano) e i dati che le due cose si scambiano.

Se Arduino legge una temperatura (e il programma lo scrivi in C), la temperatura sempre un NUMERO sarà, quindi Arduino dovrà trasmetterti, es. 37.5° e ti trasmetterà 5 caratteri ... il 3, il 7, il . il 5 e il CR finale. Sua Android (dove avrai scritto in Java), comunque dovrai aver fatto un programma che riceve i caratteri ... 3 poi 7 poi . poi 5 ed infine CR e che li elabora sapendo che sono una temperatura.

Chiaro ora ?

Guglielmo

P.S.: CR = Carriage Return (0x0D), è il carattere con cui, si solito, si termina l'invio di dati.

Per Accendere e spegnere un LED ti basta mandare UN carattere seguito dal CR, ad esempio 0 per spegnere ed 1 per accendere ...
... su Android scriverai un qualche cosa che invia al Bluetooth o i caratteri '1' + 0x0D per accendere o i caratteri '0' e 0x0D per spegnere.
... su Arduino riceverai dal Bluetooth (... in realtà dalla porta seriale a cui è connesso il modulo) e, se quello che avrai ricevuto è '0' spegni il LED, se è '1' lo accendi.

Guglielmo

Già molto meglio, questa risposta è diversa e ben più chiara.
Se però l'IDE di Arduino converte il linguaggio C/C++ in "macchina" per essere reinterpretato da Arduino, lo stesso può fare un smartphone con app in Java? Ovvero come si comporta un APP a differenza dell'IDE che gira su pc?

Thomasfr:
Se però l'IDE di Arduino converte il linguaggio C/C++ in "macchina" per essere reinterpretato da Arduino, lo stesso può fare un smartphone con app in Java? Ovvero come si comporta un APP a differenza dell'IDE che gira su pc?

Questo non deve preoccuparti, tu non vedi il codice macchina generato e su ogni sistema il compilatore genera il giusto codice per l'HW dove il programma deve girare.

Solo per tua curiosità posso dirti che mentre il compilatore su Arduino genera del vero codice macchina, normalmente su Android con Java questo non è vero ... viene generato un codice intermedio che poi un apposito "interprete" interpreta per l'HW su cui è installato. Ma ripeto, queste sono cose indipendenti da ciò che tu dei fare :wink:

Guglielmo

Grazie Guglielmo, sei super