Apenas para ajudar no entendimento de alguns conceitos e enriquecer a discussão...
Programo em C, assembly (adoro!!), Python, ... e tenho um Arduino (Mega2560) e gosto muito do bichinho, mas acho meio limitado para as minhas aplicações atuais. Estou montando até um medidor de torque nas horas (pouco) vagas.
Atualmente, estou cursando doutorado e iniciando no uso de placas da National Instruments com o LabView, MatLab, Scilab, .... Pensei até em usar o Arduino, mas logo percebi que a taxa de transmissão (porta serial), a resolução e a relação S/N do conversor A/D (de 10 Bits) não atendem, mesmo com sobre-amostragem. E melhorar o Arduino, acrescentando vários acessórios (A/D de 16 ou 24 bits, Ethernet ou PCI) ia ficar meio gambiarra e não ia atender mais adiante, com várias restrições (tempo de processamento, capacidade de executar funções mais complexas).
Para mim (não vi até hoje), uma deficiência importante na arquitetura do Arduíno é a falta de uma ferramenta de Debug, se for usar a linguagem C, não há um Debug específico em tempo real nem off-line. Por outro lado, encontramos um Debug em tempo real, e off-line, com linguagem "C" e assembly, até nos PICs, usando o compilador C e o PICKit2, ... da Microhip. O Debug é essencial no desenvolvimento de aplicações mais sérias.
Apesar disso tudo, sou um defensor do conceito de projeto aberto do Arduíno. Se todos os projetos fossem assim, o mundo seria melhor...
O Arduino para mim é adequado para aplicações onde não se quer gastar tempo, iniciantes, sendo sensacional para despertar no uso de microcontroladores. Mas falha em aplicações mais ambiciosas, mas aí, podemos dar o passo seguinte e escolher outras opções (DSP, Raspberry Py, ARM, FPGA, ...).