1
0
mirror of https://github.com/s00500/SimpleExpressions synced 2024-11-21 23:10:54 +00:00

Rebuilding mouth loading system

This commit is contained in:
Lukas Bachschwell 2017-11-22 00:30:35 +01:00
parent 1b98b31c25
commit f8795b892e
4 changed files with 86 additions and 69 deletions

View File

@ -1,47 +1,42 @@
#ifndef Shapes_h #ifndef Shapes_h
#define Shapes_h #define Shapes_h
struct Frame
{
String name;
unsigned int data[7][3];
}
typedef Frame;
//*********************************************************************************** //***********************************************************************************
//*********************************MOUTHS DEFINES************************************ //*********************************MOUTHS DEFINES************************************
//*********************************************************************************** //***********************************************************************************
const Frame shapes[] = {
const int zeros[7][3] = { {
{0,0,0}, "zeros",
{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,0,0},
{0,0,0}, {0,0,0},
{0,0,0},
{0,0,0},
}
},
{
"happySimple",
{
{0,0,0},
{0,150,0},
{0,150,0},
{0,150,0},
{0,150,0},
{0,0,0},
{0,0,0},
}
}
}; };
const int happySimple[7][3] = {
{0,0,0},
{0,150,0},
{0,150,0},
{0,150,0},
{0,150,0},
{0,0,0},
{0,0,0},
};
const int testing[7][3] = {
{0,0,0},
{0,150,0},
{0,150,0},
{0,150,0},
{0,150,0},
{0,0,0},
{0,0,0},
};
//giving all moths a unique ID
#define M_ZERO 0
#define M_HAPPY_SIMPLE 1
#define M_TESTING 2
#endif #endif

View File

@ -1,29 +1,19 @@
#include "Arduino.h" #include "Arduino.h"
#include "SimpleExpressions.h" #include "SimpleExpressions.h"
void SimpleExpressionsClass::init(int mouthPin, int buzzerPin) { void SimpleExpressionsClass::init(int mouthPin, int buzzerPin) {
mouth = Adafruit_NeoPixel(7, mouthPin, NEO_GRB + NEO_KHZ800); mouth = Adafruit_NeoPixel(7, mouthPin, NEO_GRB + NEO_KHZ800);
pinBuzzer = buzzerPin; pinBuzzer = buzzerPin;
pinMode(buzzerPin, OUTPUT);
mouth.begin(); mouth.begin();
mouth.show(); mouth.show();
} }
/////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////
//-- MOUTHS & ANIMATIONS ----------------------------------------// //-- MOUTHS ----------------------------------------//
/////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////
unsigned long int SimpleExpressionsClass::getMouthShape(int number){
unsigned long int types []={zero_code,one_code,two_code,three_code,four_code,five_code,six_code,seven_code,eight_code,
nine_code,smile_code,happyOpen_code,happyClosed_code,heart_code,bigSurprise_code,smallSurprise_code,tongueOut_code,
vamp1_code,vamp2_code,lineMouth_code,confused_code,diagonal_code,sad_code,sadOpen_code,sadClosed_code,
okMouth_code, xMouth_code,interrogation_code,thunder_code,culito_code,angry_code};
return types[number];
}
unsigned long int SimpleExpressionsClass::getAnimShape(int anim, int index){ unsigned long int SimpleExpressionsClass::getAnimShape(int anim, int index){
@ -32,26 +22,22 @@ unsigned long int SimpleExpressionsClass::getAnimShape(int anim, int index){
void SimpleExpressionsClass::putAnimationMouth(unsigned long int aniMouth, int index){ void SimpleExpressionsClass::putAnimationMouth(unsigned long int aniMouth, int index){
//ledmatrix.writeFull(getAnimShape(aniMouth,index));
} }
void SimpleExpressionsClass::writeMouth(){ void SimpleExpressionsClass::writeMouth(unsigned int mouthId){
if(mouthId > sizeof(shapes)/sizeof(Frame*)) {
if(debug) Serial.println('mouth does not exist');
}
writeMouthGeneric(shapes[mouthId].data);
}
void SimpleExpressionsClass::writeMouthGeneric(const unsigned int mouthArray[7][3]) {
for(uint16_t i=0; i<7; i++) { for(uint16_t i=0; i<7; i++) {
mouth.setPixelColor(i, mouth.Color(happySimple[i][0], happySimple[i][1], happySimple[i][2])); mouth.setPixelColor(i, mouth.Color(mouthArray[i][0], mouthArray[i][1], mouthArray[i][2]));
} }
mouth.show(); mouth.show();
} }
void SimpleExpressionsClass::putMouth(unsigned long int mouth, bool predefined){
if (predefined){
//ledmatrix.writeFull(getMouthShape(mouth));
}
else{
//ledmatrix.writeFull(mouth);
}
}
void SimpleExpressionsClass::clearMouth(){ void SimpleExpressionsClass::clearMouth(){
for(uint16_t i=0; i<mouth.numPixels(); i++) { for(uint16_t i=0; i<mouth.numPixels(); i++) {
@ -63,11 +49,43 @@ void SimpleExpressionsClass::clearMouth(){
/////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////
//-- SOUNDS -----------------------------------------------------// //-- SOUNDS -----------------------------------------------------//
/////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////
/*
void SimpleExpressionsClass::_tone (float noteFrequency, long noteDuration, int silentDuration){ void SimpleExpressionsClass::_tone (float noteFrequency, long noteDuration, int silentDuration){
// tone(10,261,500); // tone(10,261,500);
// delay(500); // delay(500);
//
// #define anaPin 32
/*
#define digiPin 33
#define beepPin 35
int freq = 2000;
int channel = 0;
int resolution = 8;
void setup() {
pinMode(digiPin, INPUT_PULLUP);
Serial.begin(115200);
ledcSetup(channel, freq, resolution);
ledcAttachPin(12, channel);
ledcWriteTone(channel, 440);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.print("AnalogValue: ");
Serial.print(analogRead(anaPin));
Serial.print(" DigitalValue: ");
Serial.println(digitalRead(digiPin));
if(!digitalRead(digiPin))ledcWrite(channel, 255);
else ledcWrite(channel, 0);
delay(50);
}
if(silentDuration==0){silentDuration=1;} if(silentDuration==0){silentDuration=1;}
@ -75,8 +93,9 @@ void SimpleExpressionsClass::_tone (float noteFrequency, long noteDuration, int
delay(noteDuration); //milliseconds to microseconds delay(noteDuration); //milliseconds to microseconds
//noTone(PIN_Buzzer); //noTone(PIN_Buzzer);
delay(silentDuration); delay(silentDuration);
*/
} }
/*
void SimpleE::bendTones (float initFrequency, float finalFrequency, float prop, long noteDuration, int silentDuration){ void SimpleE::bendTones (float initFrequency, float finalFrequency, float prop, long noteDuration, int silentDuration){

View File

@ -7,17 +7,20 @@
#include "Shapes.h" #include "Shapes.h"
#define debug true
class SimpleExpressionsClass class SimpleExpressionsClass
{ {
public: public:
void init(int mouthPin, int buzzerPin); void init(int mouthPin, int buzzerPin);
void writeMouth(int mouth); void writeMouth(unsigned int mouth);
void clearMouth(); void clearMouth();
void writeMouthRecolored(int mouth, u_int32 color); void writeMouthRecolored(int mouth, uint32_t color);
void writeMouthGeneric(int[7][3] mouthArray); void writeMouthGeneric(const unsigned int mouthArray[7][3]);
void putAnimationMouth(unsigned long int anim, int index); void putAnimationMouth(unsigned long int anim, int index);

View File

@ -2,7 +2,7 @@
void setup() { void setup() {
SimpleExpressions.init(13, 14); SimpleExpressions.init(13, 14);
SimpleExpressions.writeMouth(); SimpleExpressions.writeMouth(1);
} }