Gå til innhold

Anbefalte innlegg

Heisann!

 

Holder på med et skoleprosjekt som er programmering av mikrokontrollere.

Jeg gjorde det veldig enkelt og brukte en Arduino. Programmeringsspråket er veldig baset på C, så det er utrolig enkelt å kode :)

 

Jeg kommer til å oppdatere dere med ett nytt prosjekt hver torsdag eller fredag.

 

Hvis du har kommentarer eller tilbakemeldinger, post her :)

 

Prosjekt #1 - Binær teller med 7-segment display

Da var jeg i gang med mitt første prosjekt!

 

Det jeg skal gjøre er å få fire LED-lys til å telle binært til 15, og et 7-segment display til å telle desimalt fra 0-9 og hexadesimalt fra 10-15 (a-f)

 

Orker ikke å lage noen avansert kode så jeg gjør det enkelt:

 

 


//Hvor fort skal den telle? (1000ms = 1s)
int fart = 1000;

void setup() {

 //Setter LED-lys ol. som OUTPUT
 pinMode(1, OUTPUT);
 pinMode(2, OUTPUT);
 pinMode(3, OUTPUT);
 pinMode(4, OUTPUT);
 pinMode(5, OUTPUT);
 pinMode(6, OUTPUT);
 pinMode(7, OUTPUT);
 pinMode(8, OUTPUT);
 pinMode(9, OUTPUT);
 pinMode(10, OUTPUT);
 pinMode(11, OUTPUT);
 pinMode(12, OUTPUT);
 pinMode(13, OUTPUT);


 //Slår av "prikken" på 7-segmentet
 digitalWrite(9, 0);


}
void loop() {

//Lyser opp hvert enkelt segment og LED-lys

// write '0'
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 0);
digitalWrite(9, 0);

delay(fart);


 // write '1'
digitalWrite(2, 0);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 0);
digitalWrite(9, 0);

digitalWrite(10, 0);
digitalWrite(11, 0);
digitalWrite(12, 0);
digitalWrite(13, 1);

delay(fart);

digitalWrite(13, 0);

 // write '2'
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 0);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 0);
digitalWrite(8, 1);
digitalWrite(9, 0);

digitalWrite(10, 0);
digitalWrite(11, 0);
digitalWrite(12, 1);
digitalWrite(13, 0);

delay(fart);

digitalWrite(12, 0);

 // write '3'
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 1);
digitalWrite(9, 0);

digitalWrite(10, 0);
digitalWrite(11, 0);
digitalWrite(12, 1);
digitalWrite(13, 1);

delay(fart);

digitalWrite(12, 0);
digitalWrite(12, 0);
 // write '4'
digitalWrite(2, 0);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 1);
digitalWrite(8, 1);
digitalWrite(9, 0);

digitalWrite(10, 0);
digitalWrite(11, 1);
digitalWrite(12, 0);
digitalWrite(13, 0);

delay(fart);

digitalWrite(11, 0);

// write '5'
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 0);
digitalWrite(7, 1);
digitalWrite(8, 1);
digitalWrite(9, 0);

digitalWrite(10, 0);
digitalWrite(11, 1);
digitalWrite(12, 0);
digitalWrite(13, 1);

delay(fart);

digitalWrite(11, 0);
digitalWrite(13, 0);

// write '6'
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 1);
digitalWrite(9, 0);

digitalWrite(10, 0);
digitalWrite(11, 1);
digitalWrite(12, 1);
digitalWrite(13, 0);

delay(fart);

digitalWrite(11, 0);
digitalWrite(12, 0);

// write '7'
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 0);
digitalWrite(9, 0);

digitalWrite(10, 0);
digitalWrite(11, 1);
digitalWrite(12, 1);
digitalWrite(13, 1);

delay(fart);

digitalWrite(11, 0);
digitalWrite(12, 0);
digitalWrite(13, 0);

// write '8'
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 1);
digitalWrite(9, 0);

digitalWrite(10, 1);
digitalWrite(11, 0);
digitalWrite(12, 0);
digitalWrite(13, 0);

delay(fart);

digitalWrite(10, 0);


// write '9'
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 1);
digitalWrite(8, 1);
digitalWrite(9, 0);

digitalWrite(10, 1);
digitalWrite(11, 0);
digitalWrite(12, 0);
digitalWrite(13, 1);

delay(fart);

digitalWrite(10, 0);
digitalWrite(13, 0);

// write 'a'
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 1);
digitalWrite(9, 0);

digitalWrite(10, 1);
digitalWrite(11, 0);
digitalWrite(12, 1);
digitalWrite(13, 0);

delay(fart);

digitalWrite(10, 0);
digitalWrite(12, 0);

// write 'b'
digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 1);
digitalWrite(9, 0);

digitalWrite(10, 1);
digitalWrite(11, 0);
digitalWrite(12, 1);
digitalWrite(13, 1);

delay(fart);

digitalWrite(10, 0);
digitalWrite(12, 0);
digitalWrite(13, 0);

// write 'c'
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 0);
digitalWrite(9, 0);

digitalWrite(10, 1);
digitalWrite(11, 1);
digitalWrite(12, 0);
digitalWrite(13, 0);

delay(fart);

digitalWrite(10, 0);
digitalWrite(11, 0);

// write 'd'
digitalWrite(2, 0);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 0);
digitalWrite(8, 1);
digitalWrite(9, 0);

digitalWrite(10, 1);
digitalWrite(11, 1);
digitalWrite(12, 0);
digitalWrite(13, 1);

delay(fart);

digitalWrite(10, 0);
digitalWrite(11, 0);
digitalWrite(13, 0);

// write 'e'
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 1);
digitalWrite(9, 0);

digitalWrite(10, 1);
digitalWrite(11, 1);
digitalWrite(12, 1);
digitalWrite(13, 0);

delay(fart);

digitalWrite(10, 0);
digitalWrite(11, 0);
digitalWrite(12, 0);

// write 'f'
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 1);
digitalWrite(9, 0);

digitalWrite(10, 1);
digitalWrite(11, 1);
digitalWrite(12, 1);
digitalWrite(13, 1);

delay(fart);

digitalWrite(10, 0);
digitalWrite(11, 0);
digitalWrite(12, 0);
digitalWrite(13, 0);

}

 

 

 

Legger også ved en film av det ferdige resultatet.

 

 

 

En veldig lang kode, men enkel å forstå. En grei start :)

 

Er ikke helt sikker på hva jeg skal jobbe med neste uke, men det kommer!

Endret av chilloman
  • Liker 2
Lenke til kommentar
  • 3 uker senere...
Videoannonse
Annonse

Da har det vært en stund siden sist, på grunn av ferie og andre greier :p

 

Prosjekt #2 - Processing og Arduino

 

Denne uken har jeg jobbet med kommunikasjon mellom en Arduino og Processing.

Processing er et programmeringsspråk for elektronisk kunst og design.

 

Man kan sende ut signaler gjennom COM porter som Arduino bruker.

 

Hva har jeg gjort?

Ja, jeg har jobbet med et program der du holder musen over et område, og et LED lys på Arduinoen lyser.

Ganske enkelt igrunn. Her er kildekoden og noen bilder:

Processing:

import processing.serial.*;

float boxX;
float boxY;
int boxSize = 20;
boolean mouseOverBox = false;

Serial port;

void setup()  {
size(200, 200);
boxX = width/2.0;
boxY = height/2.0;
rectMode(RADIUS);

println(Serial.list());
port = new Serial(this, Serial.list()[0], 9600);

}

void draw()
{

background(0);

if (mouseX &--#62; boxX-boxSize && mouseX &--#60; boxX+boxSize &&
mouseY &--#62; boxY-boxSize && mouseY &--#60; boxY+boxSize) {
mouseOverBox = true;
stroke(255);
fill(153);
port.write('H');
text("LED = ON", 75, 146);
}
else {
stroke(153);
fill(153);
port.write('L');
text("LED = OFF", 74, 146);
mouseOverBox = false;
}

rect(boxX, boxY, boxSize, boxSize);

}

Arduino:

const int ledPin = 13;
const int ledPin2 = 12;
int incomingByte;	
void setup() {
 Serial.begin(9600);
 pinMode(ledPin, OUTPUT);
}
void loop() {
 if (Serial.available() &--#62; 0) {
incomingByte = Serial.read();
if (incomingByte == 'H') {
  digitalWrite(ledPin, HIGH);
}
if (incomingByte == 'L') {
  digitalWrite(ledPin, LOW);
}
 }
}

U3vit.png

 

Det var alt fra meg for denne gang, kommer forhåpentligvis et nytt prosjekt på torsdag eller fredag, stay tuned!

 

Husk å kommentere i kommentartråden!

Endret av chilloman
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...