Big Mouth Billy Bass automation library
Embed:
(wiki syntax)
Show/hide line numbers
billybass.hpp
00001 #ifndef __included_billybass_hpp 00002 #define __included_billybass_hpp 00003 00004 #include "mbed.h" 00005 #include "config.hpp" 00006 #include <list> 00007 #include <vector> 00008 #include <cmath> 00009 #include "mbed_debug.h" 00010 00011 class BillyBass 00012 { 00013 public: 00014 00015 BillyBass(PinName tailPin, PinName mouthPin, PinName bodyPin, bool _inverted=false) : 00016 tail(tailPin), mouth(mouthPin), body(bodyPin), inverted(!!_inverted) { 00017 relax(); 00018 if (numFish < MAX_FISH) fish[numFish++] = this; 00019 else fprintf(stderr, "Too many fish!\r\n"); 00020 } 00021 00022 // if *_pName, it will get the string name of the output 00023 DigitalOut *outputNamed(char const *_outputName, char const **_pName = 0, float *_pOnDelay = 0, float *_pOffDelay = 0, float *_pMinOn = 0); 00024 00025 static BillyBass *bassNumber(unsigned which) { 00026 return (which >= numFish) ? 0 : fish[which]; 00027 } 00028 00029 static unsigned getNumFish() { 00030 return numFish; 00031 } 00032 00033 int onState() const { 00034 return !inverted; 00035 } 00036 int offState() const { 00037 return inverted; 00038 } 00039 00040 void relax() { 00041 tail.write(offState()); 00042 mouth.write(offState()); 00043 body.write(offState()); 00044 } 00045 char const * outputName(DigitalOut const *out) const; 00046 00047 protected: 00048 static BillyBass* fish[ MAX_FISH ]; 00049 static unsigned numFish; 00050 static char const * mouthName; 00051 static char const * bodyName; 00052 static char const * tailName; 00053 00054 DigitalOut tail; 00055 DigitalOut mouth; 00056 DigitalOut body; 00057 int inverted; 00058 }; 00059 00060 #endif
Generated on Sun Jul 17 2022 08:00:03 by 1.7.2