Pular para o conteúdo

As placas

UNO, Nano, Mega, Leonardo, UNO R4 e ESP32 — o mapa de cada uma, e por que ele vem da PLACA e não de uma tabela.

Cada placa tem um mapa diferente: quantos pinos digitais, quais fazem PWM, quantos canais analógicos, qual a resolução da conversão. Escrever esse mapa no código da linguagem seria errar na primeira placa nova — então, com a placa ligada, quem responde é ela.

dataforge
adopt Arcane.IoT as IoT

placa := IoT.conectar_simulada("uno")
assert "pwm" in placa.capacidades(9)        // a PLACA disse isto
assert not ("pwm" in placa.capacidades(13))

monitor:
    placa.modo(13, "pwm")                   // e por isso isto é recusado
    assert no                               // não chega aqui
handle Error as e:
    out e.message                           // o pino 13 nao faz 'pwm'.
placa.fechar()

Os modelos que o simulador conhece#

dataforge
adopt Arcane.IoT as IoT

m := IoT.modelos()
assert m["uno"]["digitais"] is 14 and m["uno"]["analogicos"] is 6
assert m["mega"]["digitais"] is 54
assert 11 in m["uno"]["pwm"] and not (4 in m["uno"]["pwm"])
out sorted(keys(m))
ModeloDigitaisAnalógicosPWMTensãoFQBN
uno1463, 5, 6, 9, 10, 115 Varduino:avr:uno
nano1483, 5, 6, 9, 10, 115 Varduino:avr:nano
mega54162–13, 44–465 Varduino:avr:mega
leonardo20123, 5, 6, 9, 10, 11, 135 Varduino:avr:leonardo
uno-r41463, 5, 6, 9, 10, 115 Varduino:renesas_uno:unor4wifi
esp323416quase todos3,3 Vesp32:esp32:esp32
dataforge
adopt Arcane.IoT as IoT

assert IoT.tensao(1023) is 5.0                      // UNO: 10 bits, 5 V
assert round(IoT.tensao(4095, 3.3, 12), 2) is 3.3   // ESP32: 12 bits, 3,3 V

Uma Mega tem mais pinos, e o Firmata os vê#

dataforge
adopt Arcane.IoT as IoT

placa := IoT.conectar_simulada("mega")
assert placa.info()["pinos"] is 70
placa.modo(53, "saida")                 // um pino que não existe numa UNO
placa.escrever(53, yes)
assert placa.simulador.pino(53) is 1
placa.fechar()

Qual é o FQBN da minha placa?#

O arduino-cli responde, com a placa ligada:

bash
$ dataforge iot placas
  /dev/cu.usbmodem1101           Arduino UNO R4 WiFi        arduino:renesas_uno:unor4wifi

Um FQBN em branco quer dizer que a placa foi reconhecida mas o core dela não está instalado — arduino-cli core install arduino:renesas_uno resolve.