Linguagem para programação

Pessoal, peço desculpas pela pergunta muito básica, mas ontem tomei conhecimento do Arduino com um amigo e fiquei maravilhado.
Gostaria de saber se o Arduino somente aceita a linguagem C para programação e Java apenas para o PC ou se consigo programar diretamente com Java no Arduino.

Obrigado.

O Arduino funciona com C/C++. Logo não é extremamente distante do Java.

O chip sob o qual o Arduino é baseado aceita, que eu tenha conhecimento, C/C++, Assembly e BASIC.

Tendo em conta que Java corre sobre uma JVM, não achas um bocado exagerado haver algo assim que corresse num chip de 8 bits?

Boa pergunta! Não sei correctamente a resposta, por isso vou dar a minha opinião e deixarei o resto para outro membro mais experiente.

Há várias versões de "Arduino" (ou placas Arduino). Mas eu diria que "Arduino" é mais que uma placa (ou um conjunto de placas) é uma maca é uma mas principalmente uma filosofia. Já havia antes a filosofia código aberto (open source - principalmente para software, como é lógico) e com o Arduino aparece o hardware aberto (open hardware).
Eu sei que estou a "enrolar um bocado" e a fugir à questão, mas isto é apenas para enquadrar a minha resposta. Sendo assim, Arduino é uma plataforma de HW aberto, eu diria que principalmente identificada pelos "escudos" (shields) que são placas de circuito impresso que encaixam nas placas controladoras e têm as suas ligações (pinos) em locais definido. Portanto isto é a filosofia "Arduino"/"open hardware", depois a marca é outra coisa. Aqui pode encontrar os produtos da "marca Arduino" (ou melhor, aqueles que de alguma forma contribuem para o projecto).
Chegados a este ponto, a resposta já está enquadrada e posso ser mais concreto. Chamo a atenção para o facto de lá atrás ter utilizado a expressão "placas controladoras", isto porque, há várias. As mais simples possuem microcontroladores de 8 bits (não sei de que área é mas, pela pergunta, imagino que não seja de electrónica, assim, um microcontrolador é um microprocessador já com alguns periféricos incorporados na mesma pastilha), as mais "potentes" têm possuem microcontroladores de 32 bits.
Esta é a parte importante da minha resposta e o motivo pelo qual eu estive a "vaguear". Os microcontroladores de 32 bits, são dispositivos que suportam Linux, sendo assim, são autênticos "computadores" a correr Linux, e desta forma, suportam qualquer linguagem de programação que suportaria um ordinário PC a correr Linux (ou GNU/Linux como diz o Sr. Richard Stallman, se preferir). Isto é pode usar Java, Phyton, C/C++, etc.
Esta é a parte que eu já não consigo ajudar, porque já não é bem a minha área, mas penso que por exemplo o Arduino Yún e o Arduino Tre pertencem a esta categoria. Depois há outros projectos (não oficiais, porque não constam na tal página que indiquei), como o PCDuino ou outros deste género (penso que há mais mas só me vem este à cabeça, penso que por razões obvias: PC + Arduino = PCDuino).
Existe ainda outro projecto deste género, que embora, também tenha seguido a filosofia "open hardware", não seguiu a dos "shields" (e ligações padronizadas), por isso eu não considero que seja "Arduino", embora esteja directamente relacionado pela questão do open hardware (e principalmente pelo preço - cerca de 25USD), que é o Raspberry Pi.
Estes são os processadores "potentes" que correm Linux, como disse, todos os outros (ou que eu utilizo) não correm Linux, por isso apenas podem ser programados em C/C++, pelo menos com o IDE fornecido pelo grupo Arduino. Poderá sempre programar com outra linguagem (nem que seja pelo menos Assembler), mas aí já terá que encontrar outra forma de programar que não passa pelo IDE oficial.

Chamo mais uma vez a atenção para o facto de todos as placas e material em geral que não está listada na página que forneci não contribuírem para o projecto Arduino, por isso na minha óptica devem ser evitadas, para que o projecto continue a crescer, ou pelo menos se mantenha.

Peço desculpa pelo "testamento" e complexidade da resposta, mas penso que a pergunta assim o obrigava (se leu e entendeu penso que concordará e verá que se fosse de outra forma não conseguiria passar toda a informação em condições).

PS.: como demorei muito tempo a responder, ma altura de submeter a resposta, já tinha havido alguém que se tinha adiantado, no entanto, não vou alterar uma virgula.

bubulindo:
(...)
Tendo em conta que Java corre sobre uma JVM, não achas um bocado exagerado haver algo assim que corresse num chip de 8 bits?

Nope! :slight_smile: Porque também há placas com processadores de 32 bits, dual core, 1GB de RAM (DDR 3), USB OTG, Ethernet, Wi-fi, etc., etc., etc., tudo na mesma placa (sem usar um único shield, portanto). É tudo uma questão de definição de "Arduino". Mas dada a pergunta, penso que o OP estaria mais interessado nesta definição mais ampla de "Arduino".

Uma coisa é certa, sem ser o RPi e talvez o PCDuino, não faço ideia quanto custarão os outros "Arduinos", mas não deve ser pouco!

E também concordo com esta parte da resposta do bubulindo:

bubulindo:
O Arduino funciona com C/C++. Logo não é extremamente distante do Java.
(...)

Eu fiz o contrário (do C/C++ tentei aprender Java) e não tive grande dificuldade, mas imagino que este passo "ao contrário" seja mais difícil, mas que também possa ser dado.

Ok...

Esqueci-me que agora toda a gente quer ter o equivalente a um telemóvel para piscar leds.
Se é para usar java e linux, então é preferível usar uma Rpi ou algo do género... Se é para interagir com o exterior e ligar sensores etc... O arduino clássico com um microcontrolador será o melhor.

Já agora, pelo que vi, só o, arduino tre usará linux/java.

Afinal de contas qual é o objectivo? A parte dos apontadores, a diferença entre C++ e java ao nível do arduino não é nada doutro mundo.

@bubulindo: Gostei desta parte:

bubulindo:
Ok...
Esqueci-me que agora toda a gente quer ter o equivalente a um telemóvel para piscar leds.
(...)

:slight_smile: é quase isso, mas a parte do "equivalente a um telemóvel", dá que pensar porque mesmo os telemóveis evoluíram de processadores bem menos potentes para quadcuores, etc., que temos hoje em dia.

Penso que o Yún, também suporta Linux:

The Arduino Yún is a microcontroller board based on the ATmega32u4 (datasheet) and the Atheros AR9331. The Atheros processor supports a Linux distribution based on OpenWrt named OpenWrt-Yun. The board has built-in Ethernet and WiFi support, a USB-A port, micro-SD card slot, 20 digital input/output pins (of which 7 can be used as PWM outputs and 12 as analog inputs), a 16 MHz crystal oscillator, a micro USB connection, an ICSP header, and a 3 reset buttons.

qual é a vantagem? Se for só para "piscar LED's", nenhuma, mas para outras (mesmo tento um SO muito mais "pesado") pode haver algumas.

Mas estou convencido que alguém que vem da área de informática se começar por aqui (quase de certeza) que mais cedo ou mais tarde, vai sentir a necessidade de "descer", seja por uma questão financeira (um pequeno projecto, não necessita de Linux e uma board caríssima) seja por questões de tamanho, seja por outra coisa qualquer.

luisilva:
Mas estou convencido que alguém que vem da área de informática se começar por aqui (quase de certeza) que mais cedo ou mais tarde, vai sentir a necessidade de "descer", seja por uma questão financeira (um pequeno projecto, não necessita de Linux e uma board caríssima) seja por questões de tamanho, seja por outra coisa qualquer.

Não vá mais longe... Necessidade de interface com o mundo exterior. A Rpi funciona a 1,8V se não me engano e o Arduino Due e semelhantes a 3,3V. Uma grande percentagem de shields não funcionam a 3,3V, tornando essas placas menos flexíveis que os Arduinos "normais".

luisilva:
Chamo mais uma vez a atenção para o facto de todos as placas e material em geral que não está listada na página que forneci não contribuírem para o projecto Arduino, por isso na minha óptica devem ser evitadas, para que o projecto continue a crescer, ou pelo menos se mantenha.

Não vi os links, mas há que fazer uma distinção entre pirataria e usar material do Arduino. Uma coisa é comprar Arduinos do eBay que na realidade são cópias pirata do Arduino, e isso sim deve ser evitado. Outra é comprar placas com o desenho do Arduino com outra marca.
Eu gosto, e prefiro às do Arduino, as placas da Seeedstudio. São baseadas no Arduino, o software é o mesmo, mas não estão a piratear o Arduino.

@bubulindo: Cada um é livre de pensar como quer, no entanto, eu penso que fazer "publicidade" a outra coisa que não seja Arduino, neste sítio, pelo menos, "moralmente" não é o correcto. O símbolo que temos no canto superior esquerdo é o da marca Arduino não é o da Seeed... ou outro qualquer. Se quiser, quem paga o alojamento deste site e deste fórum é o dinheiro que as pessoas gastam quando compram um dispositivo com esta marca (e algumas outras, mas que estão perfeitamente identificadas e autorizada), sendo assim, penso que o correcto é exactamente dizer isso dizer ao utilizador que faz uma pergunta: "tens esta marca mais barata, no entanto, não contribui para a comunidade e para o projecto Arduino".

Por acaso, esta discussão foi tida esta semana, aqui:
http://forum.arduino.cc/index.php?topic=254049

e iniciada por mim, porque aquilo que está dito no guia de moderação é qualquer coisa como: "publicidade a clones, deve ser reportada à moderação e pode incorrer em acções legais pela equipa Arduino", coisa que eu penso que é exagerada (e por isso iniciei a discussão), mas que como disse, moralmente deve-se tentar seguir, ou pelo menos informar o utilizador dessa realidade.

Já agora essa sua definição de "pirataria" não é oficial. O que está definido é "placas oficiais", "clones", "derivados", "compatíveis" e "contrafeitas" (ou placas falsificações, que têm o logótipo, mas são produzidas por outra entidade qualquer):

Compreende-se perfeitamente qual é a sua ideia, e em parte está correcta, no entanto nenhuma das outras, sem ser as placas originais e derivadas contribuem para o projecto.

A definição não está completa ou bem explicada. Mas o que queria transmitir era o que estava nesse post do Massimo.

As placas oficiais do Arduino evoluíram também por causa de derivados. Algumas ideias foram implementadas e outras, não foram, abrindo por isso espaço para outras empresas inovarem.

Quando referi a Seeed (note-se que não tenho nada a ver com essa empresa), fi-lo porque eles realmente inovaram nos seus produtos. Se vir o preço e adicionar os portes, verá que não são assim tão baratos e têm placas diferentes.

A versão deles do Arduino tem pequenos pormenores interessantes no desenho... um dos quais é o switch para desligar o auto-reset. Imensa gente se queixou disto no Arduino oficial e no entanto... nunca nada foi feito.

Se vir a versão deles do Mega verá que é muito mais ajeitadinha...

O botão de reset nas placas deles não fica inacessível se colocar um shield por cima, por exemplo.

Ora mesmo não contribuindo monetariamente, eles trazem gente a este site também.... E isso é outra coisa que muita gente parece não dar valor. Além de não se poderem considerar clones...

Agora vá ao eBay e meta Arduino e 99,9% dos que lá estão são clones e realmente não deviam usurpar a marca do Arduino...

Existem pessoas aqui (não é o meu caso) com décadas de experiência em microelectrónica... e existem pessoas que não sabem o que é uma resistência. Não acha que as pessoas mais experientes trazem algo valioso para a marca Arduino a custo zero??
Se não fossem pessoas dessas, os fóruns estavam bem mais vazios já que ninguém se ia dar ao trabalho de cá vir procurar soluções.

Esta questão é complicada... mas temos também de perceber que o Arduino não é propriamente um iPhone... é o básico para fazer um microcontrolador funcionar com o chip de comunicação USB numa placa. Eu desenhei algo assim quando estudava (ainda não havia USB na altura, logo era um DS275) e muitos outros fizeram igual e o desenho não era muito diferente do Arduino.

Obrigado pelas respostas pessoal!
Meu objetivo é aprender a programar e utilizar as placas corretas para automatizar minha casa: cortinas, projetor, banheira, iluminação, etc.

Muito bom falarem pois eu vi no ebay algumas placas e não sabia que eram piratas. Alguma forma de identificar facilmente as piratas?

Normalmente as placas "originais" vêm dentro de uma "caixinha" com o logo da marca e um manual de instruções e têm apenas a referência Arduino (não a outra marca). As placas "originais", são apenas as que contam na página do link:

Se a pergunta era "Como saber se a placa que eu estou a comprar é realmente uma original e não uma falsificação?", esse pergunta já é mais difícil de responder. Em princípio eu diria, que se for um vendedor de confiança não deve ter problemas, se for um vendedor qualquer no e-bay é um risco que pode correr.

Pelo projecto que descreve, eu diria também, que deverá ser melhor aprender C/C++, uma vez que não tem uma grande quantidade de processamento e não deve valer a pena ir para uma placa com um processador de 32 bits apenas para ter uma linguagem mais familiar, mas isso é consigo.

Por exemplo se chegar à conclusão que deverá ter várias placas distribuídas pela casa e se cada uma for uma placa muito mais cara talvez o projecto fique inviabilizado, não é?

Estes são os preços de várias destas placas originais em 2 lojas on-line em Portugal:
http://www.inmotion.pt/store/arduino-pro-mini-328-3.3v-8mhz
http://www.inmotion.pt/store/arduino-uno-rev-3
http://www.inmotion.pt/store/arduino-yun