Fish Food – Shauna Stewart – Rodolfo Cossovich
Context and Significance
My previous research that impacted this midterm project were the several examples we saw of someone interacting with an object in the environment that then rippled an effected the environment. One specific exmaple that comes to mind is the musical swing set. A swing set is something that already exists and people know how to use but the musical aspects adds a new dimension to it and a new way of interacting with the object.
I wanted to create a project that gave the user a new way of engaging with a concept that they were already familiar with. The thing that is significant about our project is that it allows the user to have fun with a task that is generally deemed menial and boring such as feeding fish. It provides an alternative way of completing a necessary sometimes daily task. Our project is aimed at large companies such as aquariums or parks that have to feed a large amount of aquatic animals..
It could also provide protection for individuals who have to feed dangerous animals such as sharks. They can use the truck mechanism to feed the animals without having to get too close to them.
Conception and Design
The first challenge in completing this project was coming up with an idea. We cycled through 3 other ideas before finally landing on this one.
(Previous Ideas)
(Current Project)
We imaginged that users were going to interact with our project mostly using their hands. We tried to make the levers and button that the user was required to move as clear as possible and there was also a stack of marbles on the top of the project itself that the user would pick up and load into the truck. We were originally going to use a scoop so that the user did not have to pick up the marbles individually with their hands but we realized the mechanism was not strong enough to launch more that three marbles at a time.
It also would have been more immersive if the user did not have to manually load the marbels into the carboard mechanism.
Fabrication and Production
In terms of materials we were limited to carboard for building the structure of the mechanism. We used a cut up mop to represent moss and bushes that would generally be found near a pond to make it seem more realistic. It would have been better had we been able to paint the project but because of time constraints we used a marker to color the cardboard.
We wanted to use a stepper for the truck and control it using a potentiometer but using the stepper was not as smooth as we thought it would be. The stepper would get extremely hot while we were testing with it and it would jerk the cardboard mechanism around making it difficult to use. We wanted the motion of the cardboard to be fluid so we had to get rid of the steeper. Instead we replaced it with a bigger servo that allowed us to move the cardboard mechanism cleanly using the potentiometer.
An issue that I had while coding was trying to seperate what worked from what didn’t. Since we had many motors and moving parts connected together sometime once part would work but the other would not and I could not figure out why. I ended up creating different sketches for each individual component to test if the componet worked on its own and then combining the sketches at the end.
This also carried over to some of the wiring issues. Sometimes one servo would run and the other would not even if the code was correct. We had to unplug everything and plug in each component individually to test that each piece was working properly and then plug them all in once again.
Another issue that appeared while working on the project was trying to set up the IR sensor. We used an IR sensor to detect and count the marbles that the user was dropping into the hole. When the sensor count reached a specific number the fish would stop move however the senor was so sensitive that it was reading the cardboard box and counting it as marbles. We had to use a seperate cardboard structure to position the sensor to prevent it from reading the cardboard.
Before we started using the IR sensor we used a button to stand in for the sensor however I had a difficult time coding it to count each time the button was pressed. I would get no response from the motors after the button was pressed and I ended up not being able to solve this issue and switched the button out completely for the IR sensor.
Our original concept was a fish pond that became polluted by the users actions. The user was asked to use a truck to launch marbles into a cardboard replica of a fish pond. The marbles signified coals and when the amount of coals in the pond reached a specific number the fish would stop moving and die signifying that the water had been polluted by the coals. During the user testing however, many people who tested our project had a fun time moving the truck and launching the marbles. It seemed contradictory that the user was having so much fun killing the fish. So we decided to change the theme of our project to feeding fish instead of killing fish. Now the marbles symbolize fish food and when the amount of marbles in the pond reaches a specific number the fish become active and begin to move.
Code
#include Servo fish1; Servo fish2; Servo fish3; Servo trucktilt; Servo truck1; int pos = 10; int inc = 1; int val; int prevVal; int IRsensorVal; int coal = 0; int count; long startTime; int standButton = 11; int counter = 0; #include const int RECV_PIN = 7; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { // put your setup code here, to run once: Serial.begin(9600); fish1.attach(8); //this is the servo for fish1 fish2.attach(9); //this is the servo for fish2 trucktilt.attach(10); //this is the servo for the opening mechanism of the truck truck1.attach(3); //this is the servo for the truck Serial.println("feed the fish"); } void loop() { val = analogRead(A0); val = map(val, 0, 1023, 0, 180); //Serial.println(val); truck1.write(val); //when the button is pressed the cardboard on the truck lifts standButton = digitalRead(11); if (standButton == HIGH) { trucktilt.write(180); //when the button is not pressed the cardboard on the truck falls } else { trucktilt.write(55); } /** *The IR sensor reads the marbles and counts them *Kevin helped with this part */ IRsensorVal = analogRead(A1); if (IRsensorVal > 200) { count++; Serial.println(count); } if (millis() % 10 < 8) { if (pos < 10 || pos > 90) { inc *= -1; } if (count > 5) { pos += inc; fish1.write(pos); } if (count > 10) { pos += inc; fish2.write(pos); } } if (IRsensorVal > 150) { val = HIGH; } else { val = LOW; } if (prevVal == LOW && val == HIGH) { coal++; Serial.print("one more rock: "); Serial.println(coal); // startTime = millis(); } prevVal = val; delay(5); }
Conclusions
The goal of our project was to create something that allowed users to interact with the environment. The origninal concept was that the user’s actions caused degredation and harm to the environment but we changed the design of the project so that the user’s interaction would be a positive one with the environment. The project results align with my definition of interaction because the user must interact with the mechanisms in order to get a result. Thier actions directly cause the reaction of the fish in the pond. The project results do not align with my definition of interaction because there are only two outcomes that comes from the users action. No matter what action the user takes the fish will either move or not move. I think the project could have been more interactive if there were more actions that the user could take to impact the pond environment.
The audience interacted with our project in a more positve way than we expected. We wanted to make the mechanism as smooth as possible so that the user would not be frustrated by figuring out how to use the mechanism. We also wanted the task of the user to be obvious, the slider requires you to slide it and the truck moves in the same direction as the slider and the button opens the mechanism. There was some explaination required but overall I think the user was able to become familiar with what they had to do relatively quickly. I think it would have been better if we did not have to explain how to use the mechanism to the user and have them just figure out what to do based on what is in front of them. If we had more time I would have liked to add music to the project like the sound of a river and birds to make it more immersive to the user. I also would have liked to add some sort of mechanism that could drop the marbles one by one into the truck so the user did not have to load it by hand. This project has taught me about the importance of testing each aspect individually and not getting too frustrated when something doesn’t work. This project also showed how to build and execute an idea from the ground up and that I was capable of a lot more than I thought I was.
Disassembly
Appendix