I have decided to redesign and update my initial plush ice cream night light. This time I would like it to have a more refined design, as well as more function. You may find my outline here:
I have decided to redesign and update my initial plush ice cream night light. This time I would like it to have a more refined design, as well as more function. You may find my outline here:
Hey guys, for my final project, I’m going to make a lamp installed in the library that will discourage people from talking loudly by utilizing their sense of guilt.
How?
Check it out 😀
Hello Everyone!
How many people have ignored a text message, by accident (or on purpose!) in the last week? If you are me, the answer is more than one…
Keeping close to all your people can be tough, especially when you have many important people in your life. Social circle keeps all your loved ones in one place, and tells you when you are slacking on the conversation. Nobody likes to be a the person who ignores their friends, and now, you don’t have to be that person!
Check out my (in progress) tutorial on how to build this magical device that builds thriving relationships!
Inspired by the idea of One Big Thing and the physical form of Tamagotchi, TAZZERO is a task management device that counts down the task one needs to complete each day, which is only one. The aim is to get the sum to 0. If a task is not finished by midnight, a new task will replace the old one and add +1 to your clock.
My rough outline can be found here! 🙂
For my final project my goal is to create a clock that can display up to 100 years of time past a certain date. It does this through six different dials all powered through independent stepper motors connected to an Arduino reading a real time clock module (thanks Becky!).
I am imagining that a clock like this could be used to mark the exact amount of time since an important event (birth of a child, anniversary, a person starting sobriety), to help mark the occasion exactly. Depending on how the building and coding goes, the resetting of the clock via a button every time it is pressed may be a feature for V2.0.
Below can be found my drawings regarding possible form, as well as my link to the outline and tools/materials list.
https://docs.google.com/document/d/1SDm_j-oxIthKATLxeyhMz939mIoXOPTdOahBQb70qQE/edit?usp=sharing
Hi all,
My final project is a speculative project.
Its purpose is to raise awareness around how many and how often people die from shootings in this country.
You can find my document here.
This is my code, which needs a lot more work, since it is the hardest part of the project:
/* ------------------------------------------------------------------------- ShootingsArtefact -- an artefact that reacts to the number of deaths by shooting in the US using the the Adafruit HUZZAH ESP8266 WiFi microcontroller (can also work on other ESP8266 boards) with numbers provided by http://www.gunviolencearchive.org/. LED on pin 15 shows status: Steady on = One-time initialization Fast flicker = Connecting to network, polling data Slow blink = Symptoms predicted in forecast (24-48 hrs) Blip ea. 4 sec = Symptoms not in forecast (sleeping) ---------------------------------------------------------------------------- Configure the code below with your WiFi credentials. Then visit http://www.gunviolencearchive.org/ and look up the number you wish to display. Copy the URL into the appropriate spot in the code below. When changing the number to be displayed, you will need to dig through the page's HTML source to find a string that uniquely identifies the condition sought, while avoiding false positives. See additional notes later in the code. ----------------------------------------------------------------------------*/ #include #define LED_PIN 13 // LED+ is connected here #define POLL_INTERVAL (15 * 60) // Time between server queries (seconds) #define FAIL_INTERVAL 30 // If error, time before reconnect (seconds) #define READ_TIMEOUT 10000L // Client read timeout, milliseconds char ssid[] = "AGH", pass[] = "???", host[] = "www.gunviolencearchive.org", page[] = "/"; // This structure is used during string-matching operations. Only the // 'string' element is initialized here; other elements are initialized // or modified as needed in multiFind(). This code is NOT AVR-friendly; // PROGMEM strings are not used, it's assumed this will be running on // an ESP8266 (or ported to other non-AVR board that just normally puts // const strings in program memory instead of RAM). struct stringMatch { const char * const string; uint8_t stringLength; uint8_t matchedLength; } matchList0[] = { { "Number of Deaths1" }, { NULL } // END OF LIST, don't remove this }; // Can create add'l string match lists here if needed WiFiClient client; String readString; int deathsThisYear; void setup(void) { pinMode(LED_PIN, OUTPUT); digitalWrite(LED_PIN, HIGH); // Steady on = startup Serial.begin(57600); Serial.println("Hello!"); } // STRING-MATCH FUNCTION ----------------------------------------------------- // multiFind() scans a connected Client object for one or more strings // (NULL-terminated stringMatch array 'list'), returns index of the first // string matched (0 to n-1) or -1 if timeout or no match. static int8_t multiFind(struct stringMatch *list) { uint32_t t; char c; uint8_t i; // Reset all stringMatch items prior to search... for(i=0; list[i].string; i++) { list[i].stringLength = strlen(list[i].string); list[i].matchedLength = 0; } for(t=millis();;) { if(client.available()) { // Data pending from Client? c = client.read(); // Read it if(c == 0) break; // End of data reached, no match for(i=0; list[i].string; i++) { // Compare against each stringMatch item... if(c == list[i].string[list[i].matchedLength]) { // Matched another byte? if(++list[i].matchedLength == // Matched whole string? list[i].stringLength) return i; // WINNER, return index } else { // Character mismatch, reset counter to start list[i].matchedLength = 0; } } t = millis(); // Reset timeout } else if((millis() - t) > READ_TIMEOUT) { Serial.println("Timeout"); break; } } return -1; // No string match, or timeout } void loop() { uint32_t t, hi, lo, pauseTime = FAIL_INTERVAL; // Fast blink during WiFi connection... analogWriteFreq(4); // 4 Hz analogWrite(LED_PIN, 100); // ~10% duty cycle Serial.print("WiFi connecting.."); WiFi.begin(ssid, pass); while(WiFi.status() != WL_CONNECTED) { Serial.write('.'); delay(500); } Serial.println("OK!"); // Slightly slower (but still quick) blink while searching analogWriteFreq(1); // 1 Hz analogWrite(LED_PIN, 100); // ~10% duty cycle Serial.print("Contacting server..."); if(client.connect(host, 80)) { Serial.print(F("OK\r\nRequesting data...")); client.print("GET "); client.print(page); client.print(" HTTP/1.1\r\nHost: "); client.print(host); client.print("\r\nConnection: Close\r\n\r\n"); // multiFind() searches the incoming stream for a list of possible // string matches, returning the index of the found item (or -1 if // no match). Stream position will be immediately after the found // item (allowing further searches to be performed from that point // forward), or end of stream in -1 case. // client.find() is the normal Arduino Stream search function, which // looks for a single item. In this code, we're using multiFind() // to skip past some of AccuWeather's false positives, to pick a // starting point for a simple string search that more reliably // indicates migraine weather in the forecast... if((multiFind(matchList0) >= 0) && client.find("")) { // get past the last HTML before the number we want to capture) // Found it -- number of kills this year. Serial.println(F("FOUND")); for (int i=0; i<6; i++){ // 5 digits and a comma, this will change in January when the count resets char c = client.read(); //gets one byte from serial buffer readString += c; //makes the String readString delay(2); //slow looping to allow buffer to fill with next character } if (readString.length() >0) { Serial.print("Number of gun deaths in 2017 (as a string): "); Serial.println(readString); //so you can see the captured String readString.remove(2, 1); // remove comma (one character at index 2) deathsThisYear = readString.toInt(); //convert readString into a number readString=""; Serial.print("now as an integer: "); Serial.println(deathsThisYear); } hi = lo = 500; // 1 Hz, 50% duty cycle } else { // No match Serial.println(F("not found")); hi = 10; // Tiny blip lo = 3990; // at about 1/4 Hz } // This is just one example...more complex code might need multiple // find() and/or multiSearch() calls with different lists as a sort // of decision tree. Serial.println("Closing server connection."); client.stop(); pauseTime = POLL_INTERVAL; } else { Serial.println("failed."); } // WiFi is turned off between server queries, to save a little power if // you decide to make this battery-operated. Serial.println("Stopping WiFi."); WiFi.disconnect(); analogWrite(LED_PIN, 0); // Delay until next server query time. The values of 'hi' and 'lo' // determine the LED blink speed. This code doesn't use any low-power // sleep techniques, as the ESP8266 doesn't appear to support PWM while // sleeping...it has to be blinked in software. Serial.print("Pausing for "); Serial.print(pauseTime); Serial.println(" seconds."); t = millis(); while((millis() - t) < (pauseTime * 1000)) { digitalWrite(LED_PIN, HIGH); delay(hi); digitalWrite(LED_PIN, LOW); delay(lo); } }
Hey guys, for my final project I’m making a device that plays music counter-intuitive to the weather outside. If it’s bright outside, it plays slow music. When it’s overcast, it plays upbeat music. Here’s the google docs link that contains my rough outline:
https://docs.google.com/document/d/1rBDzoOmlnDeoIzB4RztKJR6GGj0luQSlqoqNkbLG95o/edit?usp=sharing
Hi all,
For my final project, I’m exploring how to make a touch-activated xylophone that plays nature sounds (tentative name: Xylophorest). It uses various components by Bare Conductive, a small studio based outside of London (thanks Becky for the recommendation!).
1.- Lock Door Alarm: Inspired by my roommates, who never close or lock the door when they come home. The idea is to build an alarm that would turn a light when the door is unlocked and send either an email or ideally lock their phones until they close and lock the door. (I have no idea how you would do the second one)
2.- Lazy-eye patch timer: My niece has a lazy eye and has to wear a patch for an hour each day. She allways forgets to either time it or wear it. The idea is to have a button, and once she presses it the timer would start, the button would the release a patch and a card to play a sort of Tetris – lego game that I can remember what is called. The game helps improve her 3D vision and keep her mind of the fact that she is wearing a patch. once the timer is of she should have finished the game.
3. Plant nanny: I recently bought a plant, because I missed having a garden, the problem is I always neglect my plants. The idea is to have a light, and a reminder sent throughout the day to help me of either water it, take it to het some sun or talk to it.
Huzzah
IDEAS: