Gruppe: Camilla Adam og Tobias Beck Petersen

Navn: Sunbed3000Super

IMG_0363

Design valg
Vi har valgt at tage udgangspunkt i solseng, som kunne følge solens retning over en dag, når man ligger på ferie og solbader. Vi har været nødt til at bruge gearing, da vi ikke kunne få vores DC motor til at køre langsomt, uden at den ville gå i stå(Dette skyldes den store belastning af hhv. lego og breadboard).  
Vores motor er placeret ved siden af vores gearing, da det gav mest mening ift. til den måde vi havde opbygget hele systemet op på. Vores LDR eller sensorerne er placeret på breadboardet nede ved fodenden, således at man ikke bliver forstyrret når man på solsengen.  
Undervejs har vi måtte ændre og tilføje forskellige ting, så som vores gearing og den måde vores solseng blev monteret på. 

Robottens hardware

Først ses her en opsætning af vores LDR,
Udklip
og hele vores setupUdklip

De overordnede funktioner hos vores robot er, at den er istand til at opfatte hvilken af vores LDR, der får mest sollys, og vha. denne information sætter den gang i motoren, og alt efter hvilken LDR der får mest sollys, vil den ændre retningen som den skulle rotere.

const int sensorPin1 = 0; // connecter sensor til analog input
const int sensorPin2 = 1; // connecter sensor til analog input

void setup() 
{
  pinMode(12, OUTPUT); //Initiates Motor Channel A pin
  pinMode(9, OUTPUT); //Initiates Brake Channel A pin 
}

void loop(){ 
  int rate1 = analogRead(sensorPin1); 
// Læser analog inputtet for den ene LDR
  int rate2 = analogRead(sensorPin2); 
// Læser analog inputtet for den anden LDR
  rate1 = map(rate1, 100, 1023, 0, 100); 
//Laver tallet om til %
  rate2 = map(rate2, 100, 1023, 0, 100); 
//Laver tallet om til % 
  int dif = rate1 - rate2; 
//Definere en variabel der inderholder forskellen mellem LDR'erne
  dif=abs(dif); 
//Gør denne værdi asbolut, altså altid et positivt tal.

  if(dif > 5){ 
// Hvis der er en forskel på mere end 5% sker følgende
    if(rate1 > rate2){ 
//Hvis LDR1 er større end LDR2 
      digitalWrite(12, HIGH); 
//Establishes forward direction of Channel A
      analogWrite(3, 250);   
//Spins the motor on Channel A at full speed 
    }

    if(rate2 > rate1){ 
//Hvis LDR2 er større end LDR1
      digitalWrite(12, LOW); 
//Establishes forward direction of Channel A
      analogWrite(3, 250);   
//Spins the motor on Channel A at full speed 
    }
  } 
  else{ 
//Hvis forskellen er under 5% så skal motoren ikke køre
  digitalWrite(12, LOW); 
//Establishes forward direction of Channel A
  analogWrite(3, 0);   
//Spins the motor on Channel A at full speed  
  }
  
}


Vores robot kan ses længere oppe, men her ses robotten hvor de forskellige delkomponenter er udpeget
12910272_10153639600427956_398571052_n

Robottens software
VI har haft udfordringer ift. til at finde ud af hvilken kode der var relevant for os. Det tog tid, at finde den rigtige kode. Da vi først fandt koden, gik det forholdsvis gnidningsfrit.

Udklip

Konklusion

Da det var en solseng vi valgte at gå efter, kunne vi ikke se meningen i at vores robot kun kunne dreje 180 grader, og har derfor ikke valgt at implementere dette. Vi har derfor ikke kunne løse opgaven fuldt ud.
Når vi snakker om forbedringer til vores robot, ville en forbedring, i forhold til opgavebeskrivelsen, være at implementere så den kun kunne dreje 180 grader. Dette kunne f.eks. klares vha. to knapper, en på hver side af robottens roteringsbane. Når robotten så fik kontakt med en af kontakterne, ville det indikere for robotten at solen nu er så svag at det ikke længere er nødvendigt for den at rotere efter den. Derimod kunne der her indsættes et delay, som fik robotten til vente til solen er gået helt ned, før den rotere tilbage til udgangspunktet, hvor den så igen er klar til at modtage solen næste morgen.

Video
IMG_0364[1]

Leave a Reply