Once you have Arduino setup for the Trinkey QT2040, you can run the following demo. This example displays a rainbow on the built-in NeoPixel LED, reads the temperature from an MCP9808 I2C temperature sensor, and reads the BOOT button press and release.
Arduino Library Installation
This example requires you to install two libraries: Adafruit NeoPixel and Adafruit MCP9808.
Open the Arduino Library Manager:
Search for NeoPixel and install Adafruit NeoPixel, being sure to double check the name.
Search for MCP9808 and install Adafruit MCP9808 Library, installing any required dependencies along with it.
// SPDX-FileCopyrightText: 2021 Kattni Rembor for Adafruit Industries
//
// SPDX-License-Identifier: MIT
/**************************************************************************/
/*!
This is a demo for the Adafruit QT2040 Trinkey and the MCP9808 temperature
sensor.
QT2040 Trinkey - https://www.adafruit.com/product/5056
MCP9808 - https://www.adafruit.com/product/5027
*/
/**************************************************************************/
#include "Adafruit_MCP9808.h"
#include <Adafruit_NeoPixel.h>
// Create the neopixel strip with the built in definitions NUM_NEOPIXEL and
// PIN_NEOPIXEL
Adafruit_NeoPixel pixel =
Adafruit_NeoPixel(NUM_NEOPIXEL, PIN_NEOPIXEL, NEO_GRB + NEO_KHZ800);
// Create the MCP9808 temperature sensor object
Adafruit_MCP9808 mcp9808 = Adafruit_MCP9808();
long previousMillis = 0;
long intervalTemp = 2000;
bool last_button = false;
void setup() {
Serial.begin(115200);
delay(100);
pinMode(PIN_SWITCH, INPUT_PULLUP); // Setup the BOOT button
pixel.begin();
pixel.setBrightness(20);
pixel.show(); // Initialize all pixels to 'off'
if (!mcp9808.begin(0x18)) {
Serial.println("Couldn't find MCP9808! Check your connections and verify "
"the address is correct.");
while (1)
;
}
mcp9808.setResolution(3);
}
uint8_t j = 0;
void loop() {
bool curr_button = !digitalRead(PIN_SWITCH);
pixel.setPixelColor(0, Wheel(j++));
pixel.show();
unsigned long currentMillis = millis();
if (currentMillis - previousMillis > intervalTemp) {
previousMillis = currentMillis;
// Read and print out the temperature.
float c = mcp9808.readTempC();
float f = mcp9808.readTempF();
Serial.print("Temp: ");
Serial.print(c, 4);
Serial.print("*C\t and ");
Serial.print(f, 4);
Serial.println("*F.");
}
if (curr_button && !last_button) {
Serial.println("Button pressed!");
}
if (!curr_button && last_button) {
!Serial.println("Button released!");
}
last_button = curr_button;
delay(10);
}
// Input a value 0 to 255 to get a color value.
// The colours are a transition r - g - b - back to r.
uint32_t Wheel(byte WheelPos) {
if (WheelPos < 85) {
return pixel.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
} else if (WheelPos < 170) {
WheelPos -= 85;
return pixel.Color(255 - WheelPos * 3, 0, WheelPos * 3);
} else {
WheelPos -= 170;
return pixel.Color(0, WheelPos * 3, 255 - WheelPos * 3);
}
}
The NeoPixel will display a rainbow. Open the serial monitor to see the temperature printed out every two seconds. Press the BOOT button to see a message printed on button press and on button release.
Page last edited January 21, 2025
Text editor powered by tinymce.