mijn eerste echte project

Projecten die niet passen in bovenstaande onderwerpen
Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: mijn eerste echte project

Berichtdoor nicoverduin » 26 Okt 2013, 10:57

Is het niet mogelijk een contra gewicht erbij te zetten zoals bij een brug? dan heb je in feite minder kracht nodig. Beetje zoals je wel een ziet bij een ophaal brug.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Advertisement

Berichten: 108
Geregistreerd: 07 Aug 2013, 21:34

Re: mijn eerste echte project

Berichtdoor KrisG » 26 Okt 2013, 12:05

Daar had ik ook al over nagedacht, maar in eerste instantie kom ik tot de conclusie dat dat gewicht dan buiten de kist moet hangen, en dat is esthetisch dan weer niet mogelijk. Maar ik neem het idee nog eens onder de loupe. Er zit ondertussen een dubbele overbrengingsarm op, misschien kan ik het gewicht daar wel aanhangen.

Kris
Als je het probleem gedetailleerd genoeg omschrijft, heb je meestal al de oplossing.

Berichten: 108
Geregistreerd: 07 Aug 2013, 21:34

Re: mijn eerste echte project

Berichtdoor KrisG » 26 Okt 2013, 19:37

Het MP3 shield zal voor een andere keer zijn, maar het goede nieuws is dat de deur het doet. Uiteindelijk heb ik het heel simpel gehouden en de servo duwt de deur open mbv een alu plaatje van een centimeter of 15.

Kris
Als je het probleem gedetailleerd genoeg omschrijft, heb je meestal al de oplossing.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: mijn eerste echte project

Berichtdoor nicoverduin » 27 Okt 2013, 01:06

evengoed een sterke servo :)
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 108
Geregistreerd: 07 Aug 2013, 21:34

Re: mijn eerste echte project

Berichtdoor KrisG » 27 Okt 2013, 09:39

15kg/cm :) maar liggend denk ik niet dat het lukt, rechtopstaand wel en zelfs heel goed.
Als je het probleem gedetailleerd genoeg omschrijft, heb je meestal al de oplossing.

Berichten: 108
Geregistreerd: 07 Aug 2013, 21:34

Re: mijn eerste echte project

Berichtdoor KrisG » 29 Okt 2013, 10:13

Gisteren de MP3 shield uitgeprobeerd, blijken er toch een aantal pinnen anders te zitten op de Mega tov de uno, maar het werkt.
De servo doet het ook.
De LCD hadden we al eens uitgetest en die doet het ook.
Dan wordt de volgende stap alles samenbouwen.

Ik dacht nog om de reedcontacten op interrupt pennen te zetten, maar die zijn nu bijna allemaal ingenomen door de MP3 shield zodat ik dat idee ga laten varen.

Het begint ergens op te lijken al moet het grote werkt nog beginnen :)

Kris
Als je het probleem gedetailleerd genoeg omschrijft, heb je meestal al de oplossing.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: mijn eerste echte project

Berichtdoor nicoverduin » 29 Okt 2013, 10:36

Er is een truuk om elke pin voor een interrupt te laten gebruiken.
http://code.google.com/p/arduino-pinchangeint/
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 108
Geregistreerd: 07 Aug 2013, 21:34

Re: mijn eerste echte project

Berichtdoor KrisG » 29 Okt 2013, 11:06

Die neem ik mee :)

Eerst proberen of ik het zo afgehandeld krijg.

Kris
Als je het probleem gedetailleerd genoeg omschrijft, heb je meestal al de oplossing.

Berichten: 108
Geregistreerd: 07 Aug 2013, 21:34

Re: mijn eerste echte project

Berichtdoor KrisG » 30 Okt 2013, 23:15

Eindelijk begonnen met programmeren.

Eerst een leerfunctie gemaakt voor de deur, die moet nog vervangen, dus is het handig dat de software zich aanpast aan de hardware :)
Dan een selftest-functie voor de ogen (leds) die dan ook meteen kan dienen voor later in het programma.

Commentaar op deze onvolledige code is welkom.

Code: Alles selecteren
//libraries
#include <LiquidCrystal.h> //LCD library
#include <SPI.h>           //SPI library
#include <SdFat.h>         //SdFat libraries     
#include <SdFatUtil.h>
#include <SFEMP3Shield.h>  //MP3 shield library
#include <Servo.h>         //Servo library

//shortnames
SdFat sd;                                //noem sd card sd
SFEMP3Shield MP3player;                  //noem MP3 shield MP3player
Servo deurservo;                         //noem servo deurservo
LiquidCrystal lcd (17,16,21,20,19,18);   //noem lcddisplay lcd

//variables
int deurpositie;     //positie van de deur voor de servo
int ogen=11;         //leds voor ogen op pin 11
int ogen_dim=30;     //dimwaarde voor ogen
int groen=21;        //reedcontacten voor verschillende kleuren teams
int geel=23;
int rood=25;
int blauw=27;
int eindeloopdeuropen=31;     //eindeloopcontact deur open
int eindeloopdeurtoe=33;      //eindeloopcontact deur dicht
int deuropen;            //eindstand servo deur open
int deurtoe;             //eindstand servo deur toe


 

//setup
void setup()
{
//Setup lcd
  lcd.begin(16,2);
  lcd.setCursor(0,0);

//Setup mp3player and SD card
  sd.begin(SD_SEL, SPI_HALF_SPEED);
  MP3player.begin();

//Setup Servo en eindeloopcontacten
  deurservo.attach(10);                //deurservo op pin 10
  pinMode(eindeloopdeuropen, INPUT);   //eindeloopschakelaar bij deur open
  pinMode(eindeloopdeurtoe, INPUT);    //eindeloopschakelaar bij deur toe
  digitalWrite(eindeloopdeuropen, HIGH);//activeren pullup
  digitalWrite(eindeloopdeurtoe, HIGH); //activeren pullup
  deurtoe=leerfunctie_toe(90);          //leer stand toe
  deuropen=leerfunctie_open(deurtoe);   //leer stand open
  lcd.clear();
  lcd.setCursor(2,0);
  lcd.print(deuropen);
  lcd.setCursor(2,1);
  lcd.print(deurtoe);
 
//Setup leds en test
  pinMode (ogen,OUTPUT);
  ogen_flits(10,10);
 
//Setup reedcontact inputs
  pinMode (geel, INPUT);         //setup pins als inputs
  pinMode (groen, INPUT);
  pinMode (rood, INPUT);
  pinMode (blauw, INPUT);
  digitalWrite(geel, HIGH);      //activeren pull-up weerstanden
  digitalWrite(groen, HIGH);     // daardoor worden de pinnen actief laag
  digitalWrite(rood, HIGH);      // de reed contacten moeten dus de pin
  digitalWrite(blauw, HIGH);     // naar massa trekken

}

//loop
void loop()
{




}




//********************
//*    functies      *
//********************

//-----------------------------------
//leerfunctie deurservo open
int leerfunctie_open(int deurpositie)
{
  int test_open;
  lcd.clear();
  do
  {
   deurservo.write (deurpositie);
   deurpositie -=1;
   test_open=digitalRead(eindeloopdeuropen);
   lcd.setCursor(2,0);
   lcd.print(test_open);
   lcd.setCursor(9,1);
   lcd.print(deurpositie);
   delay(200);
  }while (test_open!=LOW&&deurpositie>0);
  return deurpositie;
}
//-----------------------------------
//leerfunctie deurservo toe
int leerfunctie_toe(int deurpositie)
{
  int test_toe;
  lcd.clear();
  do
  {
   deurservo.write (deurpositie);
   deurpositie +=1;
   test_toe=digitalRead(eindeloopdeurtoe);
   lcd.setCursor(2,0);
   lcd.print(test_toe);
   lcd.setCursor(9,1);
   lcd.print(deurpositie);
   delay(200);
  }while (test_toe!=LOW&&deurpositie<180);
  return deurpositie;
}
//-----------------------------------
//ogenflits functie
void ogen_flits(int delay1,int delay2)
{
  for (int ogen_dim=0;ogen_dim<150;ogen_dim++)
    {
      analogWrite(ogen,ogen_dim);
      delay(delay1);
    }
  for (int ogen_dim=150;ogen_dim>=0;ogen_dim--)
    {
      analogWrite(ogen,ogen_dim);
      delay(delay2);
    } 
return;

}


Groeten,
Kris
Als je het probleem gedetailleerd genoeg omschrijft, heb je meestal al de oplossing.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: mijn eerste echte project

Berichtdoor nicoverduin » 31 Okt 2013, 00:03

Ziet er netjes uit. Zelf neig ik altijd constantes die je later mogelijk wil veranderen als een define bovenin het programma te zetten en dan ook nog in HOOFDLETTERS :)
dus bijv.
#define OGEN_UIT 10
#define OGEN_AAN 10

en dan roep je aan
ogen_flits(OGEN_UIT, OGEN_AAN); etc

verder gebruik ik graag de small camel notatie:
eerste woord in een variabele naam in kleine letters en daarna elk volgende woord beginnend met een hoofletter.

dus ipv. ogen_dim wordt dan ogenDim.

Maar dat is persoonlijk.

Tenslotte kan het geen kwaad om eens te kijken naar de notaties van doxygen. Als je door de tijd lekker bezig bent met programmeren ga je je vanzelf ergeren aan de standaard Arduino IDE en ga je op zoek naar een alternatief. Eclipse of Studio 6 zijn mogelijke opties. Beide ondersteunen (ze komen volgens mij beide uit dezelfde core) doxygen waardoor je hele mooie documentatie kan genereren van je programma zonder dat je daar nu echt veel meer voor moet doen.
Als voorbeeld:
http://autotest.verelec.nl/index.html

door wat meer parameters in de programmatuur te gooien zoals:
Code: Alles selecteren
/**
 * @name ogen_flits(int delay1, int delay2)
 * @param delay1 tijd dat de ogen uit zijn
 * @param delay2 tijd dat de ogen aan zijn
 * Functie voor het aan en uitzetten van de ogen voor de tijd van delay1 (uit) en delay2 (aan)
 */
void ogen_flits(int delay1,int delay2) {

Er kan heel veel met doxygen en met een fatsoenlijke IDE is het heeeeeel prettig ontwikkelen.

Zomaar wat ideeën
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

VorigeVolgende

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 3 gasten