Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of blip_dado by
Revision 8:ab4a9bc09839, committed 2016-01-18
- Comitter:
- pighixxx
- Date:
- Mon Jan 18 09:02:05 2016 +0000
- Parent:
- 7:5b8708227c46
- Commit message:
- 1st revision
Changed in this revision
--- a/PixelArray.lib Wed Dec 02 13:47:34 2015 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -http://mbed.org/users/JacobBramley/code/PixelArray/#47802e75974e
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/USBDevice.lib Mon Jan 18 09:02:05 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/USBDevice/#0e6b3f44926e
--- a/main.cpp Wed Dec 02 13:47:34 2015 +0000
+++ b/main.cpp Mon Jan 18 09:02:05 2016 +0000
@@ -1,9 +1,7 @@
-// miniblip sketch demo
#include "mbed.h"
-#include "neopixel.h"
+#include "USBKeyboard.h"
-// Matrix led output pin
#define DATA_PIN P0_9
#define TOUCH_N 2
#define ANALOG_PHOTO P0_16
@@ -18,70 +16,11 @@
AnalogIn ain(ANALOG_POTENTIOMETER);
Ticker tick;
-void fill_pixel(neopixel::Pixel buffer[25], int x, int y, int red, int green, int blue){
-
- if(x<0) x=0;
- if(x>4) x=4;
- if(y<0) y=0;
- if(y>4) y=4;
-
-
- int posicion=x+y*5;
- buffer[posicion].red=red;
- buffer[posicion].green=green;
- buffer[posicion].blue=blue;
-}
-
-void void_matrix(neopixel::Pixel aux[25], int tam=25){
-
- for(int i=0;i<tam;i++){
- aux[i].red=0;
- aux[i].green=0;
- aux[i].blue=0;
- }
-}
-
-int pant[5][5] = {
-{0,0,0,0,0},
-{0,0,0,0,0},
-{0,0,0,0,0},
-{0,0,0,0,0},
-{0,0,0,0,0}
-};
+uint8_t key_map[] = {'1', '2', '3', '4', '5', '6', '7', '8', '8','\n'};
+uint16_t touch_data[TOUCH_N] = {0, };
-int pantR[5][5] = {
-{0,0,0,0,0},
-{0,0,0,0,0},
-{0,0,0,0,0},
-{0,0,0,0,0},
-{0,0,0,0,0}
-};
-
-int pantG[5][5] = {
-{0,0,0,0,0},
-{0,0,0,0,0},
-{0,0,0,0,0},
-{0,0,0,0,0},
-{0,0,0,0,0}
-};
-
-int pantB[5][5] = {
-{0,0,0,0,0},
-{0,0,0,0,0},
-{0,0,0,0,0},
-{0,0,0,0,0},
-{0,0,0,0,0}
-};
-
-int palR[15] = { 5,10,15, 0,30,30, 0, 0, 0, 5,10,30,10,10,10};
-int palG[15] = { 0,10, 0,30,30, 5,10,15,20,20, 0,30, 0, 0, 0};
-int palB[15] = { 0, 0,10, 0, 0, 0, 0,15,20,10,10,30,20,10,30};
-int actualR=30;
-int actualG=0;
-int actualB=0;
-
-uint16_t touch_data[TOUCH_N] = {0, };
-int modo=10;
+// Virtual serial port over USB
+USBKeyboard keyboard;
// Pushbutton
DigitalIn pushbutton(P0_23);
@@ -105,108 +44,12 @@
touch_io->write(1);
if (0x01 == touch_data[i]) { // Threshold, get a touch
- if(i==1){
- modo=0;
- }
- else if(i==0){
- modo=1;
- }
+ keyboard.putc(key_map[i]);
} else if (0x80 == touch_data[i]) { // Last 7 measurement is under the threshold, touch is released
}
}
}
-void drawVector(int theArray[5][5], neopixel::Pixel * vectorPixel, int r, int g, int b){
- for(int i = 0;i<5;i++){
- for(int j = 0; j<5;j++){
- if(theArray[i][j] == 1)
- fill_pixel(vectorPixel,i,j,r,g,b);
- else
- fill_pixel(vectorPixel,i,j,0,0,0);
- }
- }
-}
-
-void drawColorPage(neopixel::Pixel buffer[25],int pag) {
- // The pixel array control class.
- neopixel::PixelArray array(DATA_PIN);
- for (int i=0;i<5;i++) {
- int pCol=(pag*5)+i;
- for (int g=0; g<4; g++) {
- fill_pixel(buffer,g,i,palR[pCol],palG[pCol],palB[pCol]);
- }
- array.update(buffer, 64);
- }
-}
-
-void refreshScreen(neopixel::Pixel buffer[25]) {
- // The pixel array control class.
- neopixel::PixelArray array(DATA_PIN);
- for (int i=0;i<25;i++) {
- int posx=i%5;
- int posy=int(i/5);
- fill_pixel(buffer,posx,posy,pantR[posx][posy],pantG[posx][posy],pantB[posx][posy]);
- }
- array.update(buffer, 64);
-}
-
-
-void selectColor(neopixel::Pixel buffer[25]) {
- neopixel::PixelArray array(DATA_PIN);
- int posLed = ain.read() * 15.0f;
- if (posLed>15) posLed=15;
- int page=int(posLed/3);
- int oldpage=page;
- drawColorPage(buffer,page);
- int oldLed=posLed;
- while (1) {
- int posLed = ain.read() * 15.0f;
- if (posLed>15) posLed=15;
- page=int(posLed/5);
- if (oldpage!=page) {
- // Draw a new color page
- drawColorPage(buffer,page);
- oldpage=page;
- }
- if (oldLed!=posLed)
- {
- fill_pixel(buffer,5,oldLed%5,0,0,0);
- oldLed=posLed;
- fill_pixel(buffer,5,posLed%5,50,50,50);
- array.update(buffer, 64);
- }
- if(pushbutton){
- // Select color
- int elColor=(page*5)+posLed%5;
- actualR=palR[elColor];
- actualG=palG[elColor];
- actualB=palB[elColor];
- wait_ms(50);
- while (pushbutton) {wait_ms(10);}
- // Repaint
- refreshScreen(buffer);
- break;
- }
- }
-}
-
-void clearScreen(neopixel::Pixel buffer[25], bool newDraw) {
- // The pixel array control class.
- neopixel::PixelArray array(DATA_PIN);
- for (int i=0;i<25;i++) {
- int posx=i%5;
- int posy=int(i/5);
- fill_pixel(buffer,posx,posy,0,0,0);
- if (newDraw) {
- pantR[posx][posy]=0;
- pantG[posx][posy]=0;
- pantB[posx][posy]=0;
- }
- }
- array.update(buffer, 64);
-}
-
-
int main()
{
// Turn off miniblip buzzer
@@ -225,81 +68,20 @@
// Create a temporary DigitalIn so we can configure the pull-down resistor.
DigitalIn(DATA_PIN, PullDown);
-
-
- neopixel::Pixel vector[25];
- void_matrix(vector);
-
- // The pixel array control class.
- neopixel::PixelArray array(DATA_PIN);
-
- bool pixState=0;
- int pixCount=0;
- int OldPos = ain.read() * 26.0f;
+ int OldPos = ain.read() * 15.0f;
while (1) {
// Read Pot
- int posLed = ain.read() * 26.0f;
- if (posLed>25) posLed=25;
- if (posLed<0) posLed=0;
- int posx=posLed%5;
- int posy=int(posLed/5);
- //fill_pixel(vector,posx,posy,actualR,actualG,actualB);
- if (pixState) fill_pixel(vector,posx,posy,50,50,50); else {
- int posx=posLed%5;
- int posy=int(posLed/5);
- int cred=pantR[posx][posy];
- int cblu=pantG[posx][posy];
- int cgreen=pantB[posx][posy];
- fill_pixel(vector,posx,posy,cred,cblu,cgreen);
- }
- if (posLed!=OldPos) {
- // Delete old pos
- int posx=OldPos%5;
- int posy=int(OldPos/5);
- int cred=pantR[posx][posy];
- int cblu=pantG[posx][posy];
- int cgreen=pantB[posx][posy];
- fill_pixel(vector,posx,posy,cred,cblu,cgreen);
- OldPos=posLed;
- }
-
- pixCount++;
- if (pixCount>8) {
- pixCount=0;
- pixState^= 1;
+ int posJoy = ain.read() * 15.0f;
+ if (posJoy!=OldPos) {
+ OldPos=posJoy;
+ keyboard.putc(posJoy+65);
}
- array.update(vector, 64);
- wait_ms(30);
-
- // Color button
- if (modo==1) {
- clearScreen(vector,false);
- selectColor(vector);
- modo=10;
- }
-
- // Change pixel
- if(pushbutton){
- //Check
- int posx=posLed%5;
- int posy=int(posLed/5);
- int cred=pantR[posx][posy];
- int cblu=pantG[posx][posy];
- int cgreen=pantB[posx][posy];
- if (cred==0&&cblu==0&cgreen==0) {
- pantR[posx][posy]=actualR;
- pantG[posx][posy]=actualG;
- pantB[posx][posy]=actualB;
- }
- else {
- pantR[posx][posy]=0;
- pantG[posx][posy]=0;
- pantB[posx][posy]=0;
- }
- //fill_pixel(vector,posx,posy,cred,cblu,cgreen);
- wait_ms(50);
+ if(pushbutton) {
+ keyboard.printf("!");
while (pushbutton) {wait_ms(10);}
}
+
+
}
}
\ No newline at end of file
