Skip to main content

Multiplexación de Pines con Seeed Studio XIAO MG24

El XIAO MG24 cuenta con hasta 22 pines regulares, 18 pines analógicos, 18 pines digitales, 2 SPI, 2 UART, 2 I2C, y soporta todos los PWM. Ofrece una rica variedad de pines disponibles para nuestro uso. En esta wiki, te enseñaré cómo controlar estos pines, permitiéndonos utilizarlos de manera efectiva 😀!

Digital

Preparación del Hardware

Seeed Studio XIAO MG24 SenseSeeed Studio Expansion Base for XIAO with Grove OLEDGrove - Relay

Por favor, instala el XIAO MG24(Sense) en la placa de expansión, y conecta el relé a la interfaz A0/D0 de la placa de expansión mediante un cable Grove. Finalmente, conecta el XIAO a la computadora mediante un cable USB-C.

Implementación del Software

En este ejemplo, implementaremos el control del estado de encendido/apagado de un relé usando un botón conectado a la placa de expansión XIAO. Cuando se presiona el botón, el relé se enciende, y cuando se suelta el botón, el relé se apaga.

const int buttonPin = D1;     // the number of the pushbutton pin
int buttonState = 0; // variable for reading the pushbutton status
const int relayPin = D0;

void setup() {
// initialize the Relay pin as an output:
pinMode(relayPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT_PULLUP);
}

void loop() {
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);

// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn Relay on:
digitalWrite(relayPin, HIGH);
} else {
// turn Relay off:
digitalWrite(relayPin, LOW);
}
}

Gráfico de resultados

Si todo va bien, después de cargar el programa, deberías ver el siguiente efecto.

Digital como PWM

Todos los pines GPIO en XIAO MG24(Sense) soportan salida PWM. Por lo tanto, puedes usar cualquier pin para generar PWM para ajustar el brillo de las luces, controlar servos y otras funciones.

Preparación del Hardware

Seeed Studio XIAO MG24 SenseSeeed Studio Expansion Base for XIAO with Grove OLEDGrove - Variable Color LED
tip

Por favor instala XIAO MG24(Sense) en la placa de expansión, luego conecta el LED de Color Variable a la interfaz A0/D0 de la placa de expansión usando un cable Grove. Finalmente, conecta XIAO a tu computadora mediante cable USB-C.

Implementación del Software

En este ejemplo, demostraremos cómo usar la salida PWM para controlar el brillo de una luz.

int LED_pin = D0;    // LED connected to digital pin 10

void setup() {
// declaring LED pin as output
pinMode(LED_pin, OUTPUT);
}

void loop() {
// fade in from min to max in increments of 5 points:
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 3) {
// sets the value (range from 0 to 255):
analogWrite(LED_pin, fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(30);
}

// fade out from max to min in increments of 5 points:
for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 3) {
// sets the value (range from 0 to 255):
analogWrite(LED_pin, fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(30);
}
}

Gráfico de resultados

Si el programa se ejecuta correctamente, verás el siguiente efecto de funcionamiento.

Analógico

La Placa de Desarrollo XIAO MG24(Sense) tiene un ADC de 12 bits para lectura de alta resolución de valores de sensores analógicos, lo que nos ayuda a leer valores más precisos.

A continuación, elegiremos dos sensores para reflejar las características del ADC.

Preparación de Hardware

Seeed Studio XIAO MG24 SenseGrove-Variable Color LEDGrove-Rotary Angle Sensor Seeed Studio Grove Base for XIAO

Implementación de Software

const int analogInPin = D1;  // Analog input pin that the potentiometer is attached to
const int analogOutPin = 9; // Analog output pin that the LED is attached to

int sensorValue = 0; // value read from the pot
int outputValue = 0; // value output to the PWM (analog out)

void setup() {
Serial.begin(115200);
}

void loop() {
sensorValue = analogRead(analogInPin);
outputValue = map(sensorValue, 0, 4095, 0, 255);
analogWrite(analogOutPin, outputValue);

Serial.print("sensor = ");
Serial.print(sensorValue);
Serial.print("\t output = ");
Serial.println(outputValue);
delay(100);
}
tip

Cabe señalar que si deseas usar DMA para leer señales analógicas, tu versión de biblioteca necesita ser mayor a 2.2.0. Actualmente, la nueva versión no ha sido aprobada y necesitas instalarla manualmente.

Gráfico de resultados

Si todo va bien, después de cargar el programa, deberías ver el siguiente efecto.

UART

Al trabajar con Arduino IDE, la comunicación Serial es una parte esencial de muchos proyectos. Para usar Serial en Arduino IDE, necesitas comenzar abriendo la ventana del Monitor Serie. Esto se puede hacer haciendo clic en el icono Monitor Serie en la barra de herramientas o presionando la tecla de acceso directo Ctrl+Shift+M.

Uso General de Serial

Algunas de las funciones Serial comúnmente utilizadas incluyen:

  • Serial.begin() -- que inicializa la comunicación a una velocidad de baudios especificada;
  • Serial.print() -- que envía datos al puerto Serial en un formato legible;
  • Serial.write() -- que envía datos binarios al puerto Serial;
  • Serial.available() -- que verifica si hay algún dato disponible para ser leído desde el puerto Serial;
  • Serial.read() -- que lee un solo byte de datos desde el puerto Serial;
  • Serial.flush() -- que espera a que se complete la transmisión de datos seriales salientes.

Al usar estas funciones Serial, puedes enviar y recibir datos entre la placa Arduino y tu computadora, lo que abre muchas posibilidades para crear proyectos interactivos.

Aquí hay un programa de ejemplo:

void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
}

void loop() {
// send data to the serial port
Serial.println("Hello World!");

// read data from the serial port
if (Serial.available() > 0) {
// read the incoming byte:
char incomingByte = Serial.read();
// print the incoming byte to the serial monitor:
Serial.print("I received: ");
Serial.println(incomingByte);
}

// wait for a second before repeating the loop
delay(1000);
}

Uso de Serial1

Según los diagramas de pines de XIAO MG24(Sense) anteriores para parámetros específicos, podemos observar que hay pin TX y pin RX. Esto es diferente de la comunicación serie, pero el uso también es muy similar, excepto que se necesitan agregar algunos parámetros. Así que a continuación, usaremos los pines extraídos por el chip para comunicación serie.

#define BAUD 115200

void setup() {
Serial1.begin(BAUD);
}

void loop() {
if(Serial1.available() > 0)
{
char incominByte = Serial1.read();
Serial1.print("I received : ");
Serial1.println(incominByte);
}
delay(1000);
}

I2C

XIAO MG24(Sense) tiene una interfaz I2C que se puede usar para la transmisión de datos y el análisis de muchos sensores, así como para usar algunas pantallas OLED.

Preparación del Hardware

Seeed Studio XIAO MG24 SenseSeeed Studio Expansion Base for XIAO with Grove OLED

La pantalla OLED en la placa de expansión XIAO utiliza el protocolo I2C y está conectada a la interfaz I2C del XIAO a través del circuito I2C en la placa. Por lo tanto, podemos conectar directamente el XIAO a la placa de expansión y programarlo para mostrar contenido en la pantalla.

Implementación de Software

Este ejemplo presenta cómo usar la pantalla OLED en la Seeed Studio Expansion Base para XIAO MG24(Sense).

Paso 1. Instala el Seeed Studio XIAO MG24(Sense) en la placa de expansión y luego conecta el cable Type-C.

*** Paso 2. Instala la librería u8g2.***

*** Paso 3. Copia el código y pégalo en el IDE de Arduino, luego súbelo.***

  • Descarga el archivo zip a continuación

📄 [ZIP] smiley_face Header

  • Crea un archivo de cabecera llamado "smiley_face.h" y copia el contenido del archivo zip descargado en el archivo de cabecera que creaste
#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>
#include "smiley_face.h"

U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

int xx = 20;
int yy = 10;

void setup() {
u8g2.begin();
}

void loop() {
smeil_display();
delay(500);
}

void smeil_display() {
const unsigned char* smileImages[] = {
semil1, semil2, semil3, semil4, semil5,
semil6, semil7, semil8, semil9, semil10,
semil11, semil12, semil13, semil14, semil15,
semil16, semil17, semil18, semil19, semil20,
semil21, semil22, semil23, semil24, semil25,
semil26, semil27
};

int delays[] = {
40, 50, 40, 40, 40,
40, 40, 50, 40, 40,
40, 40, 40, 50, 40,
40, 50, 40, 40, 50,
40, 50, 40, 40, 50,
50, 50, 40, 50
};

for (int i = 0; i < sizeof(smileImages) / sizeof(smileImages[0]); i++) {
u8g2.firstPage();
do {
u8g2.drawXBMP(xx, yy, 48, 48, smileImages[i]);
} while (u8g2.nextPage());
delay(delays[i]);
}
}

Gráfico de resultados

SPI

El chip XIAO MG24(Sense) integra múltiples periféricos, incluyendo una interfaz SPI que puede ser utilizada para conectar dispositivos SPI externos como memoria flash, pantallas, sensores y más.

Descripción general de la biblioteca Arduino


Basándonos en el programa de ejemplo de Arduino proporcionado por Waveshare, hemos escrito una biblioteca Arduino para usar con toda la serie XIAO, y puedes ir directamente al Github de esta biblioteca a través del botón de abajo.

Preparación del hardware

Seeed Studio XIAO MG24 SensePantalla LCD SPI de 1.69 pulgadas

Conexión de Pines

Después de preparar el hardware como se mencionó anteriormente, usa cables puente para conectar la interfaz SPI del XIAO y el OLED. Por favor, consulta el siguiente diagrama para el método de cableado.

Instalación

Dado que has descargado la biblioteca zip, abre tu Arduino IDE, haz clic en Sketch > Include Library > Add .ZIP Library. Elige el archivo zip que acabas de descargar, y si la biblioteca se instala correctamente, verás Library added to your libraries en la ventana de notificación. Lo que significa que la biblioteca se instaló exitosamente.

Implementación de Software

Después de descargar e instalar la biblioteca correctamente, puedes encontrar dos programas de ejemplo llamados helloworld.ino y bgcolor.ino en la carpeta de ejemplos. El bgcolor.ino es un ejemplo para mostrar el color de fondo, establecemos el rojo como predeterminado. Y el helloworld.ino es un ejemplo para mostrar la animación sobre el logo de nuestra empresa, y este ejemplo contiene el efecto que tiene el ejemplo bgcolor.

#include <st7789v2.h>
#include "SPI.h"
#include "seeed.h"

st7789v2 Display;

void setup() {
// put your setup code here, to run once:
Display.SetRotate(270);
Display.Init();
Display.SetBacklight(100);
Display.Clear(WHITE);
}

void loop() {
// put your main code here, to run repeatedly:
// Display.SetPixel(100, 100, RED);
// Display.DrawPoint(50, 50, YELLOW, DOT_PIXEL_8X8, DOT_FILL_AROUND);

Display.DrawImage(gImage_seeed, 20, 90, 240, 47);

Display.DrawLine(15, 65, 65, 65, MAGENTA, DOT_PIXEL_2X2, LINE_STYLE_SOLID);
Display.DrawLine(15, 70, 80, 70, MAGENTA, DOT_PIXEL_2X2, LINE_STYLE_SOLID);

Display.DrawRectangle(15, 80, 265, 150, GRAY, DOT_PIXEL_2X2, DRAW_FILL_EMPTY);

Display.DrawCircle(10, 10, 25, BLUE, DOT_PIXEL_2X2, DRAW_FILL_EMPTY);
Display.DrawCircle(10, 10, 20, BLACK, DOT_PIXEL_2X2, DRAW_FILL_EMPTY);
Display.DrawCircle(10, 10, 15, RED, DOT_PIXEL_2X2, DRAW_FILL_EMPTY);
Display.DrawCircle(10, 10, 10, GREEN, DOT_PIXEL_2X2, DRAW_FILL_FULL);

Display.DrawCircle(270, 10, 25, BLUE, DOT_PIXEL_2X2, DRAW_FILL_EMPTY);
Display.DrawCircle(270, 10, 20, BLACK, DOT_PIXEL_2X2, DRAW_FILL_EMPTY);
Display.DrawCircle(270, 10, 15, RED, DOT_PIXEL_2X2, DRAW_FILL_EMPTY);
Display.DrawCircle(270, 10, 10, GREEN, DOT_PIXEL_2X2, DRAW_FILL_FULL);

Display.DrawCircle(10, 230, 25, BLUE, DOT_PIXEL_2X2, DRAW_FILL_EMPTY);
Display.DrawCircle(10, 230, 20, BLACK, DOT_PIXEL_2X2, DRAW_FILL_EMPTY);
Display.DrawCircle(10, 230, 15, RED, DOT_PIXEL_2X2, DRAW_FILL_EMPTY);
Display.DrawCircle(10, 230, 10, GREEN, DOT_PIXEL_2X2, DRAW_FILL_FULL);

Display.DrawCircle(270, 230, 25, BLUE, DOT_PIXEL_2X2, DRAW_FILL_EMPTY);
Display.DrawCircle(270, 230, 20, BLACK, DOT_PIXEL_2X2, DRAW_FILL_EMPTY);
Display.DrawCircle(270, 230, 15, RED, DOT_PIXEL_2X2, DRAW_FILL_EMPTY);
Display.DrawCircle(270, 230, 10, GREEN, DOT_PIXEL_2X2, DRAW_FILL_FULL);

Display.DrawLine(200, 160, 265, 160, GRAYBLUE, DOT_PIXEL_2X2, LINE_STYLE_SOLID);
Display.DrawLine(215, 165, 265, 165, GRAYBLUE, DOT_PIXEL_2X2, LINE_STYLE_SOLID);

Display.DrawString_EN(20, 180, "By: Jason", &Font20, WHITE, BLACK);
// Display.DrawNum(100, 220, 123456, &Font24, RED, BRED);
Display.DrawFloatNum(100, 210, 1.00, 2, &Font16, WHITE, BLACK);
}

Encontrarás el logo de Seeed Studio impreso en la pantalla de forma dinámica.

Finalizar

Has aprendido las funciones básicas de los pines del XIAO MG24 (Sense). Ahora, exploremos más a fondo los sensores integrados.

Soporte Técnico y Discusión de Productos

¡Gracias por elegir nuestros productos! Estamos aquí para brindarte diferentes tipos de soporte para asegurar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para satisfacer diferentes preferencias y necesidades.

Loading Comments...