Learning about the solar system is always fun, but it can be even more fun if it was through a game!
This lesson provides the knowledge about the Solar System Planets by going through a story, where the students [players] are the main characters.
The story starts when an astronauts [the players] got lost in space, and they are trying to go back to their Blue Home, our planet Earth. And on their way back, they are faced with obstacles and some quizzes.
The lesson could be played depending on the number and ages of students, it is adaptable to all age groups and any number of students.
This link below shows a demo of the game:
Preparing for this lesson will require the instructor to have an Arduino to code, printed cards [design attached], and jigsaw pieces [cut with a laser cutter]. To prepare these things here are the materials needed:
Bill of materials:
Preparation:
// SENSOR LIBRARY #include <Arduino_APDS9960.h> //ADDRESSABLE RGB LED LIBRARY #include <Adafruit_NeoPixel.h> #ifdef __AVR__ #include <avr/power.h> // Required for 16 MHz Adafruit Trinket #endif // Which pin on the Arduino is connected to the NeoPixels? #define PIN 6 // LED PIN // How many NeoPixels are attached to the Arduino? #define NUMPIXELS 6 // Popular NeoPixel ring size Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); #define DELAYVAL 500 // Time (in milliseconds) to pause between pixels void setup() { #if defined(__AVR_ATtiny85__) && (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif // END of Trinket-specific code. pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED) Serial.begin(9600); while (!Serial); if (!APDS.begin()) { Serial.println("Error initializing APDS-9960 sensor."); } pinMode(6, OUTPUT); //LED LIGHT (BASE) pinMode(9, OUTPUT); // RED pinMode(10, OUTPUT); //BLUE pinMode(11, OUTPUT); //GREEN pinMode(5, OUTPUT); //PUZZER } void loop() { int r, g, b, a; double rh, bh, gh, cmax, cmin, del, h, hf; // read the color APDS.readColor(r, g, b); // print the values Serial.print("r = "); Serial.println(r); Serial.print("g = "); Serial.println(g); Serial.print("b = "); Serial.println(b); Serial.println(); // wait a bit before reading again delay(500); // LOWER LGB pixels.clear(); // Set all pixel colors to 'off' // The first NeoPixel in a strand is #0, second is 1, all the way up // to the count of pixels minus one. //for(int i=0; i<NUMPIXELS; i++) { // For each pixel... // pixels.Color() takes RGB values, from 0,0,0 up to 255,255,255 pixels.setPixelColor(0, pixels.Color(255, 255, 255)); pixels.setPixelColor(2, pixels.Color(255, 255, 255)); pixels.setPixelColor(3, pixels.Color(255, 255, 255)); pixels.setPixelColor(5, pixels.Color(255, 255, 255)); pixels.show(); // Send the updated pixel colors to the hardware. //delay(DELAYVAL); // Pause before next pass through loop //} // SENSOR // check if a color reading is available while (! APDS.colorAvailable()) { delay(1); } //find new r,g,b,c,del //rh=r/255; // gh=g/255; //bh=b/255; cmax= max(r,g); cmax= max(cmax,b); cmin=min(r,g); cmin= min(cmin,b); del= (cmax-cmin); // find HUE if (r>g & r>b) {h=60*((g-b)/del);} if (g>r & g>b) {h= 60*((b-r)/del+2);} if (b>r & b>g) {h=60*((r-g)/del+4);} if (h<0) {h=h+360;} Serial.println(); Serial.println(h); Serial.println(); //GAME SETTINGS // depending on the value of h, the output led will change colors or the puzzer will turn on // REFRENCE FOR HUE VALUES FOR THE PIECES OF BLUE HOME GAME: while ( abs(h-hf) > 5.0) { // PINK if (h>220 & h <360) { a= random(1,3); } //BLUE if (h<220 & h >210) { a= random(3,4); } //BLACK if (h>180 & h <210) { a=random(4,6); } //GREEN if (h<180 & h >140) { a =random(1,3); } //OFFWHITE if (h<140 & h >40) { a= random(4,8); } //YELLOW if (h<40 & h >0) { a =random(3,5); } ////////////////// if (a==1) { digitalWrite(5, LOW ); // Turn the VIBRATING on digitalWrite(9, LOW ); // RED digitalWrite(10, LOW ); // BLUE digitalWrite(11, HIGH ); //GREEN } if (a==2) { digitalWrite(5, LOW ); // Turn the VIBRATING on digitalWrite(9, HIGH ); // RED digitalWrite(10, LOW ); // BLUE digitalWrite(11, LOW ); //GREEN } if ( a==3) { digitalWrite(5, LOW ); // Turn the VIBRATING on digitalWrite(9, HIGH ); // RED digitalWrite(10, LOW ); // BLUE digitalWrite(11, LOW ); //GREEN } if (a==4) { digitalWrite(5, HIGH ); // Turn the VIBRATING on digitalWrite(9, LOW ); // RED digitalWrite(10, LOW ); // BLUE digitalWrite(11, LOW ); //GREEN } if (a==5) { digitalWrite(5, LOW ); // Turn the VIBRATING on digitalWrite(9, HIGH ); // RED digitalWrite(10, HIGH ); // BLUE digitalWrite(11, LOW ); //GREEN } if (a==6) { digitalWrite(5, HIGH ); // Turn the VIBRATING on digitalWrite(9, LOW ); // RED digitalWrite(10, HIGH ); // BLUE digitalWrite(11, HIGH ); //GREEN } if (a==7) { digitalWrite(5, LOW ); // Turn the VIBRATING on digitalWrite(9, LOW ); // RED digitalWrite(10, HIGH ); // BLUE digitalWrite(11, LOW ); //GREEN } hf = h; } Serial.print("hf = "); Serial.println(hf); Serial.println(); }
LED stripes in the bottom of the piece.