The time has come where we need to test all the hardware we have bought to this point.
I have modified some basic test source files to test the WS2812 LEDs, the 4×3 Matrix Keypad and the Arduino Uno
To test the keypad, use the following code.
/* Keypadtest.pde * * Demonstrate the simplest use of the keypad library. * * The first step is to connect your keypad to the * Arduino using the pin numbers listed below in * rowPins[] and colPins[]. If you want to use different * pins then you can change the numbers below to * match your setup. * */ #include <Keypad.h> const byte ROWS = 4; // Four rows const byte COLS = 3; // Three columns // Define the Keymap char keys[ROWS][COLS] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'A','0','B'} }; // Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins. byte rowPins[ROWS] = { 8, 7, 6, 5 }; // Connect keypad COL0, COL1 and COL2 to these Arduino pins. byte colPins[COLS] = { 4, 3, 2 }; // Create the Keypad Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); #define ledpin 14 void setup() { pinMode(ledpin,OUTPUT); digitalWrite(ledpin, HIGH); Serial.begin(9600); } void loop() { char key = kpd.getKey(); if(key) // Check for a valid key. { switch (key) { case '*': digitalWrite(ledpin, LOW); break; case '#': digitalWrite(ledpin, HIGH); break; default: Serial.println(key); } } }
This is based on the standard Keypad Test Example File. This assumes that PIN 1 (onwards) from the Matrix is connected to PIN 2 (onwards) on the arduino. Pressing keys on the keypad will send data to the serial monitor in the arduino console and cause an LED to flash.
#include <Adafruit_NeoPixel.h> #ifdef __AVR__ #include <avr/power.h> #endif #define PIN 6 // Parameter 1 = number of pixels in strip // Parameter 2 = Arduino pin number (most are valid) // Parameter 3 = pixel type flags, add together as needed: // NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs) // NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers) // NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products) // NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2) // NEO_RGBW Pixels are wired for RGBW bitstream (NeoPixel RGBW products) Adafruit_NeoPixel strip = Adafruit_NeoPixel(16, PIN, NEO_GRB + NEO_KHZ800); // IMPORTANT: To reduce NeoPixel burnout risk, add 1000 uF capacitor across // pixel power leads, add 300 - 500 Ohm resistor on first pixel's data input // and minimize distance between Arduino and first pixel. Avoid connecting // on a live circuit...if you must, connect GND first. void setup() { strip.begin(); strip.show(); // Initialize all pixels to 'off' } void loop() { // Some example procedures showing how to display to the pixels: colorWipe(strip.Color(153, 32, 153), 500); // pink-white colorWipe(strip.Color(153, 153, 153), 500); // white colorWipe(strip.Color(153, 32, 153), 500); // pink-white colorWipe(strip.Color(1, 0, 0), 25); // Red colorWipe(strip.Color(0, 1, 0), 25); // Green colorWipe(strip.Color(0, 0, 1), 25); // Blue colorWipe(strip.Color(10, 0, 0), 25); // Red colorWipe(strip.Color(0, 10, 0), 25); // Green colorWipe(strip.Color(0, 0, 10), 25); // Blue colorWipe(strip.Color(25, 0, 0), 25); // Red colorWipe(strip.Color(0, 25, 0), 25); // Green colorWipe(strip.Color(0, 0, 25), 25); // Blue colorWipe(strip.Color(50, 0, 0), 25); // Red colorWipe(strip.Color(0, 50, 0), 25); // Green colorWipe(strip.Color(0, 0, 50), 25); // Blue colorWipe(strip.Color(100, 0, 0), 25); // Red colorWipe(strip.Color(0, 100, 0), 25); // Green colorWipe(strip.Color(0, 0, 100), 25); // Blue colorWipe(strip.Color(153, 0, 0), 25); // Red colorWipe(strip.Color(0, 153, 0), 25); // Green colorWipe(strip.Color(0, 0, 153), 25); // Blue colorWipe(strip.Color(200, 0, 0), 25); // Red colorWipe(strip.Color(0, 200, 0), 25); // Green colorWipe(strip.Color(0, 0, 200), 25); // Blue // Send a theater pixel chase in... theaterChase(strip.Color(70, 70, 70), 250); // White theaterChase(strip.Color(70, 0, 0), 250); // Red theaterChase(strip.Color(0, 0, 70), 250); // Blue theaterChase(strip.Color(0, 70, 70), 250); // Blue theaterChase(strip.Color(70, 0, 70), 250); // Blue theaterChase(strip.Color(0, 70, 0), 250); // Blue } // Fill the dots one after the other with a color void colorWipe(uint32_t c, uint8_t wait) { for(uint16_t i=0; i<strip.numPixels(); i++) { strip.setPixelColor(i, c); strip.show(); delay(wait); } } //Theatre-style crawling lights. void theaterChase(uint32_t c, uint8_t wait) { for (int j=0; j<10; j++) { //do 10 cycles of chasing for (int q=0; q < 3; q++) { for (uint16_t i=0; i < strip.numPixels(); i=i+3) { strip.setPixelColor(i+q, c); //turn every third pixel on } strip.show(); delay(wait); for (uint16_t i=0; i < strip.numPixels(); i=i+3) { strip.setPixelColor(i+q, 0); //turn every third pixel off } } } }
This is based on the srandtest included with the Adafruit NeoPixel Library (which is required for this to work). This assumes that your DATA pin is 6.
No Comments