måndag 12 oktober 2015

Nu är det dags

Kl 18-20 tisdag - onsdag - torsdag kör vi. Ni som har anmält er, varmt välkomna!

söndag 11 oktober 2015

torsdag 8 oktober 2015

Få arduinon att spela ljud

Du kan programmera arduinon att spela melodier, som denna välkända... Ursäkta slakten.


Och här är koden (du måste också skapa en ny tab där du lägger in pitches.h som du kan hitta här: https://www.arduino.cc/en/Tutorial/ToneMelody?from=Tutorial.Tone)

/*
  Melody

 Plays a melody

 circuit:
 * 8-ohm speaker on digital pin 8

This code is based on the original work by:

 created 21 Jan 2010
 modified 30 Aug 2011
 by Tom Igoe

This example code is in the public domain.

 http://www.arduino.cc/en/Tutorial/Tone

 The melody is programmed by Kristoffer Nordekvist who do not own the rights to the melody.

 */
#include "pitches.h"

// notes in the melody:
int melody[] = {
  NOTE_A3, NOTE_C4, NOTE_E4, NOTE_A4, NOTE_B4, NOTE_E4, NOTE_C4, NOTE_B4, NOTE_C5, NOTE_E4, NOTE_C4, NOTE_C5, NOTE_FS4, NOTE_D4, NOTE_A3,
  NOTE_FS4, NOTE_E4, NOTE_C4, NOTE_A3, NOTE_C4, NOTE_E4, NOTE_C4, NOTE_A3, NOTE_G3, NOTE_A3, NOTE_A3
};

// note durations: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = {
  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4, 4, 4, 4, 2
};

void setup() {
  // iterate over the notes of the melody:
  for (int thisNote = 0; thisNote < 26; thisNote++) {

    // to calculate the note duration, take one second
    // divided by the note type.
    //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
    int noteDuration = 1000 / noteDurations[thisNote];
    tone(8, melody[thisNote], noteDuration);

    // to distinguish the notes, set a minimum time between them.
    // the note's duration + 30% seems to work well:
    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);
    // stop the tone playing:
    noTone(8);
  }
}

void loop() {
  // no need to repeat the melody.
}

onsdag 30 september 2015

Kod för att styra robot längs eltejp och "stationer"


/***********************************************************************
* The following is explained in Swedish
* En svart linje av eltejp läggs på golvet
* Ställ Redbot rakt över eltejpen (längs med) så den kan följa eltejpen
* Redbot kommer köra rakt fram med hastighet 75/255
* Om vänster sensor känner av ett förhöjt värde (svart eltejp) kommer Redbot svänga åt höger
* Om höger sensor känner av ett förhöjt värde (svart eltejp) kommer Redbot svänga åt vänster
* På så sätt håller sig Redbot längs eltejpen
* Sätt ett rakt streck av eltejp som ett kors någonstans längs "spåret"
* Detta är en "station"
* När Redbot kommer till station stannar motorerna
* Först blinkar lilla Leden på Redbot 5 ggr långsamt
* Sedan blinkar lilla Leden på Redbot 5 gg fortare
* Sedan startar Redbot från stationen och programmet återvänder till "normaldrift" framåt
*
* This code was written with lots of help from the Arduino community and Sparkfun Electronics
* This code is released into the public domain
*
* Kristoffer Nordekvist 30.09.15
 ***********************************************************************/

//Här kommer först instruktioner om vilka program som ska vara med:

#include <RedBot.h>
RedBotSensor IRSensor1 = RedBotSensor(A3); // initialize a sensor object on A3
RedBotSensor IRSensor2 = RedBotSensor(A6); // initialize a sensor object on A6
RedBotSensor IRSensor3 = RedBotSensor(A7); // initialize a sensor object on A7

RedBotMotors motors; //startar motorernas kontroll

int Led = 13; //LED anknuten till pin 13 (finns på breadboard)

void setup() //här kommer instruktioner om vilka program som ska köras en gång
{
  Serial.begin(9600);
  Serial.println("Här följer mätning av IR-sensorerna");
  Serial.println("-----------------------------------");
  }

void loop() //Här kommer instruktioner om det som ska köras "för alltid"
{
  Serial.print("IR Sensor Readings: ");
  Serial.print(IRSensor1.read());
  Serial.print("\t");  // tab character
  Serial.print(IRSensor2.read());
  Serial.print("\t");  // tab character
  Serial.print(IRSensor3.read());
  Serial.println();
  delay(50);

  //HUVUDKOMMANDO säger att kör framåt i 75/255 hastighet
 
    motors.rightMotor(75);//startar höger motor
    motors.leftMotor(-75);//startar vänster motor

      //SVÄNGKOMMANDO 1
      if(IRSensor1.read()>900)//om IRSensor1 läser ett värde större än 900
        {
          motors.leftMotor(-25);//ska vänster motor sänka varvtal
          motors.rightMotor(125);//höger motor kör på
          // Svänger till vänster
          }
          //SVÄNGKOMMANDO 2
      if(IRSensor3.read()>900)//om IRsensor3 läser ett värde större än 900
      {
          motors.rightMotor(25);//ska höger motor sänka varvtal
          motors.leftMotor(-125);//vänster motor kör på
          //Svänger till höger
        }
          //STOPPKOMMANDO
          if(IRSensor3.read()>900 && (IRSensor2.read()>900 || IRSensor1.read()>900))
            //Om alla tre sensorerna läser högt värde
            {
              motors.brake(); //ska båda motorerna stanna
                  for (int i=0; i<5; i++) //skapar en loop som ska köras 5 ggr inuti void loop
                 //startar räkningen på 0. Räknar UPP till 5. Varje gång adderas ett.
                  { //BLINKA LÅNGSAMT
                  digitalWrite(Led, HIGH); //slå på Led
                  delay(500);  //vänta 0,5 s (500 ms)
                  digitalWrite(Led, LOW); //slå av Led
                  delay(500); //vänta 0,5 s
                 }
                   for (int i=0; i<5; i++) //skapar en loop som ska köras 5 ggr inuti void loop
                    //startar räkningen på 0. Räknar UPP till 5. Varje gång adderas ett.
                   { //BLINKA FORT
                   digitalWrite(Led, HIGH);
                   delay(100); //vänta 0,1 s
                   digitalWrite(Led, LOW);
                    delay(100); //vänta 0,1 s
                    }
                //KÖR UT FRÅN STATIONEN
                      motors.rightMotor (50);
                      motors.leftMotor (-50);
                      delay (500);
               
            }

}

tisdag 29 september 2015

Ett första uppdrag i Scratch

Denna övning är starkt inspirerad av Stiftelsen för Internetinfrastrukturs guidematerial "Barnhack".

Försök programmera detta:
1. Ge katten instruktioner att gå 10 steg fram för varje klick på den gröna flaggan.
2. Klicka på flaggan, sedan ska katten gå själv, vända vid kanten och fortsätt röra sig.
3. Efter att spelaren klickat på den gröna flaggan ska varje musklick på katten ge en poäng.
4. Om spelaren missar katten med ett musklick dras ett poäng bort från poängställningen.
5. När spelaren fått tio poäng ska katten säga "Du vann!" och spelet stanna. När spelet startas ska poängen nollställas.

måndag 28 september 2015

Scratch

Ett exempel på vad du kan göra i Scratch:
Ett annat exempel på vad du kan göra i Scratch: