Autómatas celulares basados ​​en Arduino y OLED

Puede descargar nuestro libro electrónico ‘Aprender Arduino’ desde este enlace

Este proyecto utiliza un OLED I2C 128 × 64 para mostrar un pequeño autómata celular alimentado por Arduino Nano.

requisitos previos

  • 2 protoboard de tamaño medio (ebay) (o 1 estándar)
  • 1x Arduino Nano (ebay) (también puede ser Uno)
  • 1x OLED I2C 128×64 (ebay)
  • 4 cables de puente (ebay)

suposiciones

Durante este tutorial, asumiré que sabe qué es un Arduino (o_O) y sabe cómo usar el IDE y cargar bocetos simples. También supondré que sabes un poco de programación, preferiblemente programación en C.

¡¡Entonces empecemos!!

Antecedentes

¿Qué es un autómata celular? Explicaré 1 tipo de autómatas celulares que es el Juego de la Vida de John Conway. Es una cuadrícula o celdas, cada una de las cuales tiene 2 estados Verdadero o Falso/encendido o apagado/vivo o muerto. Estas celdas se rigen por 2 reglas simples:

Regla 1: Una célula que está muerta y está rodeada por exactamente 3 células vivas, nacerá

Regla 2: una celda que está viva y tiene 3 o 2 celdas vivas permanecerá viva, de lo contrario, muere

Sencillo, no? Si necesitas más información haz una pequeña visita a Game Of Life o Cellular Automata en Wikipedia.

circuitos

Así que conecte Arduino y OLED LCD a la placa de prueba y comience a cablear.

  • Arduino —– OLED
  • 3.3v ———— VCC (presta atención a los requisitos de voltaje de tu OLED)
  • TIERRA ———– TIERRA
  • A4 ————– SDA
  • A5 ————– SCL

Luego adjunté ambas placas de prueba espalda con espalda y creé un pequeño televisor 🙂

Programando el boceto

Para facilitar (y hacer posible) jugar con la pantalla OLED, utilizaremos 2 bibliotecas de Adafruit. Si no sabe cómo agregar bibliotecas, visite https://www.arduino.cc/en/Guide/Libraries

  • Biblioteca Adafruit GFX que se utilizará para manejar todos los gráficos y textos que se muestran en OLED https://github.com/adafruit/Adafruit-GFX-Library
  • Biblioteca Adafruit SSD1306 que básicamente es el controlador para nuestro OLED. Esta biblioteca funciona solo con OLED SSD1306 128×32 y 128×64 https://github.com/adafruit/Adafruit_SSD1306
  • El boceto se puede descargar desde nuestro github: https://github.com/klauscam/Arduino-Cellular-Automata/

    alguna explicacion

    En la línea 51 con código

    display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //initialize with the I2C addr 0x3C (128x64)

    la dirección, que es 0x3C, podría ser diferente. Busqué los más obvios y probé algunos antes de que funcionara.

    Producto de trabajo

    Las líneas horizontales visibles son el resultado de las frecuencias de actualización del OLED y la cámara.

    Si necesita ayuda con el código o algo, deje sus comentarios en la sección de comentarios a continuación.

    Gracias