Alligators

From Hackteria Wiki
Revision as of 14:02, 26 February 2019 by DUSA (talk | contribs) (Muscle SpikerShield)
Jump to: navigation, search
Team Alligators

Einleitung

Im Rahmen der Blockwoche Medizintechnik DIY wurde das Projektteam Alligators gegründet. Die Blockwoche wurde vom 11. bis 16. Februar 2019 an der Hochschule Luzern Technik & Architektur durchgeführt. Innerhalb des Kurses vermittelte man den Studierenden die Do it yourself Kultur, sowie kreatives Arbeiten in interdisziplinären Gruppen. Ziel ist es, dass die Studierenden in der Lage sind, eigene Projektideen an der Schnittstelle von Technik und Medizin umzusetzen und digitale Fabrikationsmethoden für Prototypen kennen lernen und anwenden. Die Woche findet im FabLab, sowie weiteren Unterrichtsräumlichkeiten der Hochschule Luzern Technik & Architektur statt. Durch die Verbindung von Medizintechnik mit Do It Yourself Ansätzen, soll das Verständnis von medizintechnischen Geräten gefördert werden. Die Studierenden sollen sich, durch gegenseitiges Teilen von Vorkenntnissen und Erkenntnissen, selbständig Zugang zu neuem Wissen verschaffen. Während der Woche finden deshalb, nebst dem selbständigen Experimentieren und Prototypenbau, regelmässig Skill Share Sessions statt. Dort können Fähigkeiten unter den Studierenden ausgetauscht werden. Die Blockwoche fand die ganze Woche statt, täglich von 8:30 - 16.30 Uhr und am Samstag von 9:00 - 14:00 Uhr. Der definitive Wochenplan sah dann so aus:

WeekGridMedTechDIY updated MD03.png

Gruppenmitglieder

Hallo zusammen, wir sind das Team Alligators der Blockwoche Medizintechnik Do It Yourself. Der Kern des Projektteams besteht aus drei Studenten, zwei vom Studiengang Maschinentechnik und einer vom Studiengang Medizintechnik. Durch die interdisziplinäre Zusammensetzung wird die praktische und theoretische Arbeit im Team gefördert, womit zusätzlich wesentliche Erfahrungen von weiteren Fachgebieten gewonnen werden können.

Mitglieder:

Grundlagen

Do It Yourself

Beim Do It Yourself handelt es sich um eine Arbeitsmethode handelt, welche man auch als Basteln bezeichnen könnte. Man kann dabei ohne grosses Fachwissen einfach mal ausprobieren und experimentieren. Also einfach einmal selbst machen; sei es Reparieren, Verbessern oder Herstellen. Dabei geht es auch darum seine Erkenntnisse öffentlich zu teilen und von Erfahrungen von anderen zu profitieren. Man kann auch gut bestimmte Projekte von anderen weiterentwickeln, verbessern oder neu entwerfen.

3D Drucken

Ultimaker 2

Der 3D-Druck, auch bekannt unter den Bezeichnungen Additive Fertigung, Additive Manufacturing, Generative Fertigung oder Rapid Technologien, ist eine umfassende Bezeichnung für alle Fertigungsverfahren, bei denen Material Schicht für Schicht aufgetragen und so dreidimensionale Gegenstände erzeugt werden. Dabei erfolgt der schichtweise Aufbau computergesteuert aus einem oder mehreren flüssigen oder festen Werkstoffen nach vorgegebenen Maßen und Formen. Beim Aufbau finden physikalische oder chemische Härtungs- oder Schmelzprozesse statt. Typische Werkstoffe für das 3D-Drucken sind Kunststoffe, Kunstharze, Keramiken und Metalle.


3D-Drucker werden in der Industrie, im Modellbau und der Forschung eingesetzt zur schnellen und kostengünstigen Fertigung von Modellen, Mustern, Prototypen, Werkzeugen und Endprodukten. Daneben gibt es Anwendungen im Heim- und Unterhaltungsbereich sowie in der Kunst.


Auch wir haben in dieser Woche den 3D-Drucker verwendet um kostengünstig und schnell Prototypen zu bauen. Da wir bereits gute Grundkenntnisse im 3D-Druck hatten und die Unterstützung durchs FabLab gross war, hatten wir wenig Probleme unserer Prototypen herzustellen. Das einzige was uns Probleme bereitet hat, war die Masshaltigkeit der gedruckten teile. Da jeder Drucker etwas andere Eigenschaften hat, mussten wir uns zuerst mit den Druckern vertraut machen. Um sicher zu gehen das man die gedruckten Teile ohne Nachbearbeitung verwenden kann, sollte man einen Millimeter vom exakten Mass Zugabe lassen.

LaserCutter

Laser-Cutter

Mit Hilfe des Lasercuters haben wir das Gehäuse unseres Infusionsalligators aus MDF-Platten gelasert. Dies funktionierte sehr gut und ohne weiteren Komplikationen.

Arduino

Das Arduiono ist eine open Source Hardware und Software. Bei der Hardware handelt es sich um ein elektronik Board mit Mikrocontroller und diversen Ein- und Ausgängen. Die Programmiersprache basiert auf Processing und ist ähnlich zu Programmieren wie C oder C++. Für unser Projekt haben wir das Arduino verwendet um zwei Servomotoren anzusteuern und LEDs leuchten zu lassen.

SkillShare

Bei den SkillShare-Sassions ging es darum, vorhandenes Wissen zu Teilen und vom existierenden Wissen der Mitstudierenden zu profitieren. Man konnte zu Beginn der Woche auf rote Zettel Themen aufschreiben über die man gerne mehr erfahren oder lernen möchten. Zusätzlich konnte man auf Blaue Zettel sein Können aufschreiben, in dem man selbst stark ist. Anschliessend wurde eine Auswahl an Themen getroffen welche am meisten aufgeschrieben wurden. Jede Gruppe musste dann im verlauf der Woche eine SkillShare-Sassion durchführen und jeder Student musste mindestens 2 Sassions besuchen. Somit konnte bestehendes Wissen gut geteilt werden.

Experimente

Muscle SpikerShield

Muscle SpikerShield

Das Muscle SpikerShield wurde als Bausatz abgegeben und einmal fertig zusammengebaut. Die Bauanleitung dazu wird auf der Webseite https://backyardbrains.com/products/diyMuscleSpikerShield zur Verfügung gestellt.

Hintergrund

Wenn das Gehirn einen Muskel bewegen will, sendet es ein Signal über die Nervenbahnen zum gewünschten Muskel. Dieses Signal wird in Form eines Aktionspotentials über das Rückenmark zum entsprechenden Motorneuron des Muskels weitergegeben. Wenn das Aktionspotential am Muskel ankommt, verursacht es eine Spannung, da die Muskelzellen ihre Kalziumkanäle öffnen und ein Ionenaustausch verursacht. Das verursacht die Muskelkontraktion. Genau diese Spannung kann über die Elektroden aufgenommen werden, und mit dem Muscle SpikerShield ausgewertet werden.

Experiment

In diesem Experiment wurde das Kit zusammengebaut. Danach konnten die Elektroden auf einem Muskel platziert werden. Eine Referenzelektrode wurde irgendwo sonst auf dem Körper platziert. Mit dem zur Verfügung gestellten Code, konnte zusammen mit einem Arduino Uno das Signal des entsprechenden Muskels ausgewertet werden. Es zeigte sich als aufleuchtende LEDs, anhand der stärke der Kontraktion. Das Signal konnte auch als Diagramm dargestellt werden. Dieses Experiment bildet die Grundlage, um eine Schaltung oder Steuerung zu erstellen, die über Muskeln funktionieren kann.

Heart and Brain SpikerShield

Hintergrund

Mit dem Heart and Brain SpikerShield kann das Aktionspotential des Herzens und langsame Hirn-Rhythmen gemessen werden.

Experiment

Den Heart and Brain SpikerShield haben wir fertig zusammengebaut erhalten, und hatte deshalb nicht den gleichen Reiz wie der Muscle SpikerShield. Auch die dargestellten Signale des Herzens und des Hirns waren nicht so eindeutig wie beim Muscle SpikerShield. Da wir so fasziniert waren, dass man mit dem Muscle SpikerShield etwas Aktiv gesteuert werden kann, wurde der Heart and Brain Shield schnell wieder weggelegt. Uns fehlte die aktive Steuerung, da der Herzrhythmus nur regelmässig und unbewusst abläuft und die Hirnströme waren nur ein chaotisches, für uns unbrauchbares Signal. Allerdings hat uns Gaudi ein interessantes Experiment gezeigt, wo er seinen Herzrhytmuns auf einem 2D-Drucker aufgezeichnet hat. Das war auf jeden Fall sehr spannend.

Servo-Anzeige

In Gedanken schon bei unserem finalen Prototypen, wollten wir unbedingt etwas bauen, dass per Muskelbewegung gesteuert werden kann. Deshalb war der erste Schritt dazu, mit dem Muskel etwas anzusteuern. Die LEDs funktionierten ja schon mit dem Muscle SpikerShield selbst. Deshalb haben wir versucht, einen Servo über einen Muskel anzusteuern. Zuerst haben wir ganz trivial, die Anzahl LEDs in einen Winkel auf dem Servo umgerechnet. Später auch etwas komplizierter, dass eine bestimmte Position angefahren wird, wenn der Muskel bewegt wird.

Arduino-Code: #Servo

Probleme

Viele Gruppen hatten Probleme, einen Servo anzusteuern. Bei uns hat es komischerweise auf Anhieb funktioniert. Aufgrund mangelndem Wissen konnte aber keiner genau sagen, warum es genau bei uns funktionierte. Später hat sich herausgestellt, dass ein Servo mit der Signalleitung auf einen PWM-Pin gesteckt werden muss, den wir zufälligerweise getroffen haben. Auf dem Arduino Uno sind nur bestimmte Pins sogenannte PWM-Pins. Ein weiteres Problem war, dass gewisse Pins vom SpikerShield selbst gebraucht wurden und so der Servo gar nichts oder irgendetwas unerwartetes gemacht hat.

Person Fernsteuern

Unser Prototyp

Neben den verschiedenen Experimenten, wurde im Rahmen dieser Blockwoche Medizintechnik DIY eine kleine Projektarbeit (Prototype) mit Bezug zur Medizintechnik durchgeführt. Das Ziel dieses Projekt ist die Anwendungen vom erlangten Wissens, sowie eine Erweiterungen des Medizin-technischen Horizont.

Arbeitsjournal

Tag 1

Am Montag Morgen gab es eine Einführung in den Ablauf der Blockwoche. Auch die Räumlichkeiten wurden gezeigt, wo die Projektteams die nächste Woche arbeiten werden. Danach wurden die Gruppen zusammengestellt, indem die Studiengänge auf die verschiedenen Teams verteilt wurden, um möglichst interdisziplinäre Teams, mit unterschiedlichen Fähigkeiten zusammenstellen zu können. Danach erhielt jedes Team ein Set von Werkzeugen und Material zum Experimentieren. Darunter auch einen Arduino Uno und einen Bausatz für einen Muscle SpikerShield. Dieser Bausatz musste zuerst zusammengelötet werden. Dadurch konnte die Gruppe sich erst mal mit dem Lötkolben vertraut machen. Mit dem anschliessenden experimentieren konnte ebenfalls festgestellt werden, ob das Löten gut genug war, um das Shield zum laufen zu bringen. Der entsprechende Code, um die Daten der Elektroden auslesen zu können, wurde auf der Webseite von Backyard Brains zur Verfügung gestellt. Auch eine Anleitung, wie die Elektroden verwendet werden sollen, wurde mitgegeben.

Tag 2

Am Dienstag konnten wir weitere Experimente machen und ausprobieren um uns mit dem Arduino und dem Muscle Spikershield vertraut zu machen. Zusätzlich war ein Ziel dieser Woche diverse Skills von anderen Studierenden zu erlernen und auch den anderen ein Skill beizubringen. Am Morgen haben wir zusammengetragen welche Personen welche Skills haben und welche Skills erlernt werden möchten. Anschliessend wurden die einzelnen Themen definiert und den einzelnen Gruppen zugeteilt. Jede Person mussten an zwei Veranstaltungen teilnehmen und musste eine Veranstaltung leiten. Am Nachmittag hatten wir eine Einführung ins FabLab. Die Hälfte konnte sich am 3D-Drucken versuchen und die andere Hälfte hatte eine Einführung ins Laserschneiden. Zum Schluss wurde der Tag mit einer Musikalischen Unterhaltung und gemütlichem Beisammensein abgerundet. Es gab einen kleinen Apero und man konnte gegenseitig sein erlerntes Wissen austauschen.

Tag 3

Der Tag hat mit einer weiteren Skillshare Session begonnen. Danach konnten sich die Studierenden wieder dem Experimentieren mit dem Muscle SpikerShield und dem Heart and Brain SpikerShield zuwenden. Unsere Gruppe hat versucht, den Programmcode des Muscle SpikerShields zu modifizieren, um mit der Muskelaktivität etwas zu steuern, wie zum Beispiel einen Servomotor. Diesen haben wir dazu gebracht, dass er die Muskelaktivität anzeigt. Effi Tanner hat uns heute einen Einblick in ihre Tätigkeiten und ihre Laufbahn gegeben. Sie hat uns erzählt, an welchen Projekten sie sich beteiligt hat und woher sie ihre Inspiration nimmt. Teil des Kurses war auch, dass am Ende ein kleiner Prototyp im Zusammenhang mit Medizintechnik gebaut wird. Dazu konnten sich die Studierenden von einem Sammelsurium von Medizintechnikprodukten inspirieren lassen. Uns sind dabei die Spritzen aufgefallen, und wir haben uns überlegt, was wir damit machen könnten und haben mit der Planung begonnen.

Tag 4

Auch heute gab es wieder verschiedene SkillShare Sessions, wo die Studierenden von anderen Studierenden etwas neues lernen konnten. Allgemein wurde der Austausch von Wissen in dieser Blockwoche stark gefördert. So wurde zum Beispiel regelmässig ein Rundgang durch die Teams eingeplant. Dabei konnten die Teams berichten, woran sie Arbeiten, und berichten was sie gelernt haben, oder was schief gegangen ist. Der Austausch von Problemen war ein sehr wichtiger Teil. So konnte man erkennen, ob eine andere Gruppe das gleiche Problem hat, oder eventuell sogar schon eine Lösung dazu bereit hält. Das erspart enorm viel Zeit. Am Nachmittag wurde uns die Möglichkeit gegeben, mit Greg Gage via Skype zu kommunizieren. Greg Gage ist Entwickler von Backyard Brains und wir konnten ihm einige spannende Fragen stellen. Ebenfalls am Nachmittag wurden die ersten Prototypen der Gruppen vorgestellt und uns wurde nahegelegt, dass es manchmal besser sei, wenn man einen ersten Prototypen abschliesst, und sich noch an etwas Neues wagt. Allerdings haben sich die meisten Gruppen dazu entschlossen, noch weiter an ihrem ersten Prototypen weiterzutüfteln. Auch unsere Gruppe arbeitete am bisherigen Prototypen weiter, da unserer noch nicht sehr weit entwickelt war. Wir haben also die Zeit genutzt, um Teile am 3D-Drucker oder im LaserCutter herzustellen für unseren Prototypen. Auch die Elektrotechnikwerkstatt wurde als geheimer Treffpunkt der Gruppen verwendet, da dort noch mehr Werkzeuge und Maschinen vorhanden sind.

Tag 5

Gegen Ende der Woche wurde die Freiheit im Arbeiten immer grösser. Es gab immer weniger SkillShares und immer weniger Unterbrechungen zum Austausch unter den Gruppen. Deshalb konnten wir ungestört unseren Prototypen soweit fertigstellen, dass er an der grossen Präsentation am Samstag funktionsfähig vorgeführt werden konnte. Deshalb konnten wir heute alle Komponenten vereinen, die wir 3D-Gedruckt, am Lasercutter zugeschnitten oder zusammengelötet hatten. Auch am Programmcode wurde noch so lange gefeilt, dass alles funktionierte. Zum Schluss räumten die Gruppen ihre Arbeitsplätze auf und im oberen Stockwerk wurde Platz für die morgigen Präsentationen geschaffen.

Tag 6

Am Samstag morgen konnten wir erst mal "ausschlafen", da der Unterricht erst um 9 Uhr begonnen hat. Dann fanden die Präsentationen der Gruppen und deren Prototypen statt. Es war sehr spannend zu sehen, wie viele unterschiedliche Produkte und Herangehensweisen zusammen kamen. Die offene Aufgabenstellung trug dazu bei, dass sich jede Gruppe selber verwirklichen konnte und ihrer Kreativität freien Lauf lassen konnte. Auch wir stellten unseren Prototypen, die Automatische, Tragbare Infusionspumpe vor. Leider war der Prototyp noch nicht ganz ausgereift und funktionierte dadurch nur teilweise gut. Die Präsentation war aber auf jeden Fall ein Erfolg und sorgte für den einen oder anderen Lacher. Zum Abschluss wurde dann eine Reflektionsrunde durchgeführt, wo die Studierenden mitteilen konnten, was gut und was schlecht war. Auch Verbesserungsvorschläge wurden von den Kursleitern gerne entgegengenommen, um die Woche im nächsten Jahr noch besser durchführen zu können.

Vorbereitung

Readings

FabLab
http://fablab-luzern.ch/info/fab-charta-2/#FabCharter
Biotechnologie für Alle
https://www.hackteria.org/wiki/images/a/ac/SATW_INFO_2-15_DIY-Bio_DE.pdf
Interview in "The Art of Free and Open Science", MCD#68
https://www.hackteria.org/wordpress/wp-content/uploads/2012/10/hackteria_interview_MCD68.pdf

Videos

How to control someone else's arm with your brain | Greg Gage

P2P and Utopia | Based on Poem by Vasilis Kostakis 2008

"Simplicity: We know it when we see it" | George Whitesides

"Why toys make good medical devices | Jose Gomez-Marquez

SENI GOTONG ROYONG: HackteriaLab 2014 - Yogyakarta

Open Source Estrogen: Housewives Making Drugs - Mary Maggic

Skill Share Löten

Zum Hauptartikel: DIY-MedTech Löten - Team Alligators

Soldering is easy
https://mightyohm.com/files/soldercomic/FullSolderComic_EN.pdf

Grundlagen Löten

Löten ist ein thermisches Verfahren zum stoffschlüssigen Fügen von Werkstoffen, wobei eine flüssige Phase durch Schmelzen eines Lotes (Schmelzlöten) oder durch Diffusion an den Grenzflächen (Diffusionslöten) entsteht. Dabei wird eine Oberflächenlegierung erzeugt, das Werkstück in der Tiefe aber nicht aufgeschmolzen: Die Liquidustemperatur der Grundwerkstoffe wird nicht erreicht. Nach dem Erstarren des Lotes ist wie beim Schweißen eine stoffschlüssige Verbindung hergestellt.

Der Unterschied zum Schweißen liegt darin, dass beim Schweißen die Liquidustemperatur der zu verbindenden Komponenten erheblich überschritten wird und dass beim Löten die chemische Bindung zwar gleich sein kann, aber die Liquidustemperatur kaum oder nicht überschritten wird. Die Art der chemischen Zusammensetzung der Verbindung unterscheidet sich je nach verwendeten Hilfsmitteln (Schweißdraht beim Schweißen, Lotpaste oder Lotdraht beim Löten).

Ziel

Die Grundlagen des Lötens kennen und verstehen. Auf was muss geachtet werden um eine gute und saubere Lötstelle zu erhalten.

Learnings

Arduino

In der Blockwoche haben wir den Umgang mit Arduino gelernt. Wir haben gesehen, wie ein Programm aufgebaut ist und wir haben mit verschiedenen elektronischen Bauteilen experimentiert. Auch mit komplizierteren Komponenten wie einem LED-Ring konnte "gespielt" werden.

Rapid Prototyping

Für die Herstellung des Prototyps konnten wir verschiedene Herstellungsmethoden anwenden, die schnell und einfach handzuhaben sind. Mit dem 3D-Drucker lassen sich komplizierte Formen schnell und einfach aus einer CAD-Zeichnung herstellen. Der Laser Cutter kann komplizierte Formen zweidimensional "ausschneiden". So kann zB Holz oder Plexiglas schnell in die richtige Form gebracht werden. Durch geschickte Lock-Mechanismen lassen sich die zweidimensionalen Formen in dreidimensionale zusammenfügen. Mit Polymorph können freie Formen durch "kneten" erreicht werden, die nicht so einfach aufgezeichnet werden können. Und mit Woodcast, wobei durch wärme ein Holzwerkstoff in die gewünschte Form gebogen werden kann.

Informationsaustausch

Mit verschiedenen Methoden lässt sich Wissen schnell verbreiten. So werden nicht zwei mal die gleichen Fehler gemacht und es kann Entwicklungszeit gespart werden. In einem Wiki können Probleme und Learnings festgehalten werden und in einer SkillShare Session kann Wissen weitergegeben werden.

BreakOut_Methoden

Medizintechnik und Anatomie

Mit der Praktischen Anwendung von Medizintechnik konnte das Wissen über den Körper und die Technik dazu vertieft werden. Die SpikerShields regten zum Nachdenken oder Nachforschen über die genaue Funktion an. Weiter wurden SkillShares von Studierenden der Medizintechnik angeboten wie zum Beispiel die Bildgebenden Verfahren. DIY-MedTech Bildgebende Verfahren

Reflexion

Die Blockwoche wurde von uns als positive Abwechslung zum gewohnten Schulalltag empfunden. Einmal nicht nach konkreter Aufgabenstellung zu arbeiten, sondern uns selbst inspirieren zu lassen, und in der Gruppe einzubringen hat uns sehr gefallen. Das gegenseitige Lernen von anderen Studierenden, die alle bereits Fähigkeiten mitbringen ist ein sehr effizienter und vor allem interessanter Lernansatz. Die SkillShares waren sehr lehrreich und alle motiviert, etwas beibringen zu können. Ein besonderes Highlight war der SkillShare Fisch ausnehmen von Team Gustav. (DIY-MedTech Fisch ausnehmen - Team Gustav) Auch wenn es auf den ersten Blick nicht in die Blockwoche passt, ist es ein wunderbares Beispiel für die Do It Yourself Kultur. Auch der Austausch unter den Gruppen war ein Erfolg. Stand man irgendwo an, oder wusste nicht weiter, konnte man sich Rat bei den anderen Gruppen holen. Bei den Präsentationen gab es einige Spannende Prototypen und Ansätze für DIY. Jeder versteht den Auftrag etwas anders. Das nicht Vorhandensein einer genauen Aufgabenstellung ermöglicht auch ein viel grösseres Projekt zu realisieren als wenn alles vorgegeben ist. Der grosse Vorteil an der Freiheit und der knappen Zeit ist, dass einfach mal drauflos gearbeitet werden kann ohne vorher alles testen. So kann auch mal etwas schief gehen aber man hat trotzdem noch etwas neues dazu gelernt.

Anhang

Servo

#include <Servo.h>

#define NUM_LED 6  //sets the maximum numbers of LEDs
#define MAX 150     //maximum posible reading. TWEAK THIS VALUE!!
 
int reading[10];
int finalReading;
byte litLeds = 0;
byte multiplier = 1;
byte leds[] = {8, 9, 10, 11, 12, 13};

Servo servo;

int pos = 0;

void setup(){
  
  pinMode(4, OUTPUT);
  servo.attach(4, 0, 2500);
  servo.write(pos);
  
  Serial.begin(9600); //begin serial communications
  for(int i = 0; i < NUM_LED; i++){ //initialize LEDs as outputs
    pinMode(leds[i], OUTPUT);
  }
}

void loop(){
  for(int i = 0; i < 10; i++){    //take ten readings in ~0.02 seconds
    reading[i] = analogRead(A0) * multiplier;
    delay(2);
  }
  for(int i = 0; i < 10; i++){   //average the ten readings
    finalReading += reading[i];
  }
  finalReading /= 10;
  for(int j = 0; j < NUM_LED; j++){  //write all LEDs low
    digitalWrite(leds[j], LOW);
  }
  
  Serial.print(finalReading);
  Serial.print("\t");
  finalReading = constrain(finalReading, 0, MAX);
  litLeds = map(finalReading, 0, MAX, 0, NUM_LED);
  Serial.println(litLeds);
  for(int k = 0; k < litLeds; k++){
    digitalWrite(leds[k], HIGH);
  
  for(int l = 0; l < litLeds; l++){
    servo.write(10*l);
    
  } 
  }
  //for serial debugging, uncomment the next two lines.
  //Serial.println(finalReading);
  //delay(100);
}

Prototyp

#include <Servo.h>
#include <Adafruit_NeoPixel.h>

#define PIN 3

#define NUM_LED 6  //sets the maximum numbers of LEDs
#define MAX 150     //maximum posible reading. TWEAK THIS VALUE!!

Adafruit_NeoPixel strip = Adafruit_NeoPixel(16, PIN, NEO_GRB);


int reading[10];
int finalReading;
byte litLeds = 0;
byte multiplier = 1;
byte leds[] = {8, 9, 10, 11, 12, 13};

int valservo = 0;
int valmotor = 180;
int zustand = 0;

Servo servo;
Servo motor;




void setup() {

  pinMode(4, OUTPUT);
  pinMode(2, OUTPUT);
  servo.attach(4);
  motor.attach(2);
  servo.write(valservo);
  motor.write(valmotor);
  digitalWrite(leds[0], HIGH);
  digitalWrite(leds[1], HIGH);

  Serial.begin(9600); //begin serial communications
  for (int i = 0; i < NUM_LED; i++) { //initialize LEDs as outputs
    pinMode(leds[i], OUTPUT);
  }
}

void loop() {
  while (1) {
    for (int i = 0; i < 10; i++) {  //take ten readings in ~0.02 seconds
      reading[i] = analogRead(A0) * multiplier;
      delay(2);
    }
    for (int i = 0; i < 10; i++) { //average the ten readings
      finalReading += reading[i];
    }
    finalReading /= 10;
    /*for (int j = 0; j < NUM_LED; j++) { //write all LEDs low
      digitalWrite(leds[j], LOW);
      }*/

    Serial.print(finalReading);
    Serial.print("\t");
    finalReading = constrain(finalReading, 0, MAX);
    litLeds = map(finalReading, 0, MAX, 0, NUM_LED);
    Serial.println(litLeds);
    /*for (int k = 0; k < litLeds; k++) {
      digitalWrite(leds[k], HIGH);
      }*/


    if (finalReading > 50 && zustand == 0) {
      if (valservo < 80) {
        valservo += 20;
        switch (valservo) {
            case 40:
              digitalWrite(leds[0], LOW);
              digitalWrite(leds[1], HIGH);
              digitalWrite(leds[2], HIGH);
              break;
            case 80:
              digitalWrite(leds[1], LOW);
              digitalWrite(leds[2], HIGH);
              digitalWrite(leds[3], HIGH);
              break;
            default:
              break;
          }
        servo.write(valservo);
      }
      else
      {
        servo.write(80);
        if (valmotor > 100) {
          valmotor -= 20;
          switch (valmotor) {
            case 140:
              digitalWrite(leds[2], LOW);
              digitalWrite(leds[3], HIGH);
              digitalWrite(leds[4], HIGH);
              break;
            case 100:
              digitalWrite(leds[3], LOW);
              digitalWrite(leds[4], HIGH);
              digitalWrite(leds[5], HIGH);
              break;
            default:
              break;
          }
          motor.write(valmotor);
        }
        else {
          valmotor = 100;
          valservo = 80;
          motor.write(valmotor);
        }

      }
      zustand = 1;


    }
    if (finalReading < 20) {
      zustand = 0;
    }



    //for serial debugging, uncomment the next two lines.
    //Serial.println(finalReading);
    //delay(100);
  }
}