Opções de programação diferentes de C ++

14

Posso programar meu Arduino usando qualquer linguagem de programação que não seja C ++? Em caso afirmativo, quais linguagens de programação? De que software eu precisaria para compilar e carregar meu código no Arduino?

tstew
fonte
1
Relacionado: arduino.stackexchange.com/questions/105/…
O cara com o chapéu
Infelizmente, essa é uma duplicata eficaz de uma pergunta que não é do Arduino.SE: veja aqui Eu acho que a pergunta que eu vinculei deve ser movida aqui após o término da versão beta, mas ainda não.
apnorton
@anorton Essa pergunta está perguntando sobre IDEs alternativos. Esta pergunta não é duplicada porque fala sobre linguagens de programação alternativas.
tstew
@ user2202326 Desculpe ... parecia me lembrar de mais pessoas respondendo com idiomas diferentes do que IDEs nesse segmento, mas, aparentemente, eu estava errado. Continue.
apnorton
Você pode procurar no Netduino se estiver familiarizado com o C # (o Visual Studio é o caminho a seguir, mas existem outras maneiras de compilar o código C #). Não sei qual placa você possui e se é compatível. netduino.com
Jason Down

Respostas:

5

Alguns conhecidos:

Em teoria, você deve poder estender o avr-gcc para suportar outros idiomas, embora isso não seja uma tarefa pequena. Também devo ressaltar que o suporte a idiomas diferentes de C geralmente vem com algumas restrições bastante pesadas sobre os componentes de idioma - por exemplo, mesmo com o C ++, é desencorajado a instanciar novos objetos malloce freeé extremamente caro no espaço de memória e nos ciclos.

Além de usar o Google, as seguintes referências são aplicáveis Clique aqui.

Hardik Thaker
fonte
8

Em teoria, qualquer compilador que produza o conjunto AVR pode ser usado (limitações do módulo em tamanho de código, uso de memória RAM, etc.).

Os back-end do AVR existem para o LLVM e o GCC - portanto, em teoria, com algum esforço, a maioria dos idiomas suportados pelos front-ends do LLVM e do GCC pode ser compilada no AVR. Uma grande questão será o suporte da biblioteca, etc.

No entanto, aqui estão algumas escolhas estranhas para o espírito da pergunta, em vez da letra [1].

  • AMForth , um quarto dialeto pode ser exibido em um Arduino.
  • AVR-Ada : Ada para microcontroladores AVR.
  • BÁSICO : Traga de volta o Goto!

Ah, e você pode escrever o AVR Assembly cru !

[1] - Eu ainda não tentei isso!

Matthew G.
fonte
2

Existem também algumas pessoas trabalhando em sistemas baseados no node.js do Javascript . Um que já está disponível ao público é o Espruino e o outro é o Tessel, lançado na primavera de 2014.

Matthew R.
fonte
1

Como o avr-g ++ deve suportar todas as construções C / C ++ padrão, é possível codificar o assembly embutido. Mais informações sobre este tópico do fórum arduino.cc

Faux_Clef
fonte
O assembly embutido não faz parte dos padrões C / C ++, mas o gcc e o compilador microsoft c o suportam, embora de forma incompatível.
tbodt
true e o avr_gcc também.
Faux_Clef
Nada é melhor do que escrever código executável em hexadecimal.
Faux_Clef
1

Estou surpreso que ninguém tenha mencionado a Assembléia AVR !

Geralmente, o assembly não é considerado o método de programação mais interessante ou mesmo fácil, mas, no entanto, é 100% possível com todo o arduino baseado em AVR. As placas SAM provavelmente não funcionarão com esse sabor, mas ainda é possível usar a montagem em sua programação.

Todas as placas Arduino (no momento da publicação) suportam a programação de montagem via Atmel Studio , o SDK feito para chips baseados em Atmel.

O assembly é suportado ingenuamente por todos os dispositivos Atmel e não requer carregador de inicialização para funcionar, portanto, todos os programas são inerentemente em tempo real.

tuskiomi
fonte
2
Observe que o assembly também é suportado pela cadeia de ferramentas gcc, incluída na instalação do IDE do Arduino.
Edgar Bonet
@EdgarBonet Correto, é por isso que __asm__("Assembly code here")trabalha para adicionar montagem em linha a qualquer esboço. Para a maioria dos programas, essa é uma péssima idéia, pois é difícil obter independência de plataforma com esse método.
tuskiomi