Go Down

Topic: film digitaliseren met eenvoudige Arduino-code (Read 935 times) previous topic - next topic

Erik_Baas

#15
Jan 04, 2021, 12:49 am Last Edit: Jan 04, 2021, 12:54 am by Erik_Baas
Dat zou dus zijn ná deze regels?
Code: [Select]

  if (toestandknop1 == HIGH) {
    TeMakenStappen  =  STAPPEN_PER_TOTAAL_OMWENTELING1 ;  // draai 1x rechtsom
    small_stepper.setSpeed(500);                          // zet de snelheid
    small_stepper.step(TeMakenStappen);                   // loop
  }else if (toestandknop2 == HIGH) {
    TeMakenStappen  =  STAPPEN_PER_TOTAAL_OMWENTELING2 ;  // draai 0,5 keer linksom
    small_stepper.setSpeed(500);                          // zet de snelheid
    small_stepper.step(TeMakenStappen);                   // loop
  }

Vraagje: kunnen knop1 en knop2 tegelijk ingedrukt zijn?

NB: Ik stel voor om de namen "knop1" en "knop2"  te vervangen door resp. "knop1Pin" en "knop2Pin", dat is duidelijker.

En als je toch bezig bent: "STAPPEN_PER_TOTAAL_OMWENTELING1" en idem2 kunnen beter "STAPPEN_PER_TOTAAL_OMWENTELING_RECHTSOM" resp. "STAPPEN_PER_TOTAAL_OMWENTELING_LINKSOM" heten, dan zegt de naam tenminste precies waar het voor dient.

Deze regel (staat er twee keer in) lijkt mij weinig zin te hebben, de waarde is zo te zien altijd 500.
Code: [Select]

 small_stepper.setSpeed(500);

Beter verplaatsen naar void setup(), dan wordt 'ie eenmalig uitgevoerd.
 
Quote
/*
  Het programmablok void setup wordt eenmaal beschreven
*/
Hier wordt ongetwijfeld bedoeld "eenmaal uitgevoerd". Puntjes op de i...  ;-)

Ik zie nu ook (pas) dat je pin 1 gebruikt als input voor een knop. Maar op de Uno is dat de TX-pin van de seriepoort, en die kun je / mag je dus niet gebruiken! Verplaats de draden op pins1 en 2 even naar bv. 2 en 3!

Zo, dat houdt je wel even bezig, kan ik even gaan puzzelen over die delay()..  ;-)

Quote
kortom, alle goede dingen komen langzaam :smiley-confuse:
Geeft niet, als ze maar komen.  ;-)

keithjansen

#16
Jan 04, 2021, 01:24 pm Last Edit: Jan 04, 2021, 04:45 pm by keithjansen
Ja hoi Erik :-) , alvast erg bedankt voor alle moeite en tijd die je aan mijn project hebt gespendeerd

De laatste sketch met de twee knoppen kan ik evt gebruiken om te leren hoe je steppermotor code en drukknop/microswitch code in één sketch kunt laten werken, dat is ook nodig want ik heb me laten wijsmaken dat in tegenstelling tot de Raspberry pi de Arduino maar één programma tegelijk kan draaien dus daar móeten alle functies dan ook in zijn samengevat

Noodzakelijke volgende stap in mijn leerproces is dat ik alle sketches maar eens uitprint op papier en de aparte regels of alinea's m.b.t. de verschillende functies uitknip en met elkaar vergelijk en een soort GGD m.b.t. de functies ontdek en, als alles meezit,  ook nog een logische volgorde en ja, dat kan ook in de pc maar met papier kun je nou eenmaal sneller schuiven, combineren en alles overzien enz

Vanmorgen heb ik ook al code gevonden om de motor (met één, twee of drie knoppen? even vergeten) direct! linksom en rechtsom te laten draaien én ook direct te laten stoppen, ik was dus op zoek naar vooral die laatste functie

(Verder wordt de verleiding steeds groter om een kant en klaar digitaliseerding van 435 euro te kopen maar natuurlijk alleen om aan te kunnen tonen dat de mijne veel beter wordt :smiley-wink: hopelijk heb ik de mijne aan de draai vóórdat ik zo'n ding moet kopen koop)

Mvg

kees


P.S. vanmiddag bezig met printen, knippen (en plakken) van coderegels, heb al 5 sketches klaar :-)

keithjansen

dit is dus de in m'n vorige post genoemde sketch met drie direct werkende pushbuttons en een steppermotor 28BYJ-48

https://www.youtube.com/watch?v=q-H7GbyX5ho

maar het is wel een super ONoverzichtelijk filmpje en deze meneer gebruikt ook nog eens twee dezelfde kleur draden (grijsbruin) voor twee verschillende knoppen en tot overmaat van ramp is een wiring diagram natuurlijk weer niet bijgesloten dan met onnodig lastig gedoe met een link waarna je het nog niet kan vinden... :( , wat is dat toch met die wiring diagrams?? schamen Arduino en/of programmeurs/ontwikkelaars zich daar voor?

of die diagrams zijn er helemaal niet of je kunt er niet bij of het moet lastig, uiterst lastig (hou toch op...)

kortom, te onnodig lastig om deze sketch uit te voeren en je hebt hoogstens wat houvast aan de code zelf maar zover ben ik nog lang niet :( ...

Code: [Select]


/*
 * This is Arduino code to control 28BYj-48 with ULN2003 board using
 3 push buttons.  STPB-1
 * Written by Ahmad Shamshiri for Robojax Robojax.com
 * on Feb 20, 2019 at 19:34 in Ajax, Ontario, Canada
 Watch the video instruction for this sketch: https://youtu.be/q-H7GbyX5ho
 
 STPB-1 Control Stepper 28BYJ-48 Push buttons using Arduino code CCW, CW STOP STPB-1
 STPB-2 Controlling Position of 28BYJ-48 Stepper Motor with 2 Push buttons STPB-2
 STPB-3 Controlling ONE Revolution of 28BYJ-48 Stepper Motor with 2 Push buttons STPB-3
 STPB-4 Send 28BYJ-48 Stepper Moor to any Angle  with 3 Push buttons STPB-4 CW, CCW and STOP
 
You can get the wiring diagram from my Arduino Course at Udemy.com
Learn Arduino step by step with all library, codes, wiring diagram all in one place
visit my course now http://robojax.com/L/?id=62

If you found this tutorial helpful, please support me so I can continue creating
content like this. You can support me on Patreon http://robojax.com/L/?id=63
or make donation using PayPal http://robojax.com/L/?id=64

*
 * Code is available at http://robojax.com/learn/arduino

 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
 * This code has been download from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.

*/

int Pin1 = 10;//IN1 is connected to 10
int Pin2 = 11;//IN2 is connected to 11 
int Pin3 = 12;//IN3 is connected to 12 
int Pin4 = 13;//IN4 is connected to 13
int switchCW  =2;//define input pin for CW push button
int switchStop=3;//define input pin for Stop push button
int switchCCW =4;//define input pin for CCW push button

 
int pole1[] ={0,0,0,0, 0,1,1,1, 0};//pole1, 8 step values
int pole2[] ={0,0,0,1, 1,1,0,0, 0};//pole2, 8 step values
int pole3[] ={0,1,1,1, 0,0,0,0, 0};//pole3, 8 step values
int pole4[] ={1,1,0,0, 0,0,0,1, 0};//pole4, 8 step values


int poleStep = 0;
int  dirStatus = 3;// stores direction status 3= stop (do not change)

void setup()
{
 pinMode(Pin1, OUTPUT);//define pin for ULN2003 in1
 pinMode(Pin2, OUTPUT);//define pin for ULN2003 in2   
 pinMode(Pin3, OUTPUT);//define pin for ULN2003 in3   
 pinMode(Pin4, OUTPUT);//define pin for ULN2003 in4   
 
 pinMode(switchCW,INPUT_PULLUP);// CW push button pin as input
 pinMode(switchStop,INPUT_PULLUP);//Stop push button pin as input
 pinMode(switchCCW,INPUT_PULLUP);//CCW push button pin as input

}
 void loop()
{
 
  if(digitalRead(switchCCW) == LOW)
  {
    dirStatus =1;
  }else if(digitalRead(switchCW) == LOW)
  {
   dirStatus  = 2; 
  }else if(digitalRead(switchStop) == LOW)
  {
    dirStatus =3;
  }
 if(dirStatus ==1){
   poleStep++;
    driveStepper(poleStep);   
 }else if(dirStatus ==2){
   poleStep--;
    driveStepper(poleStep);   
 }else{
  driveStepper(8);   
 }
 if(poleStep>7){
   poleStep=0;
 }
 if(poleStep<0){
   poleStep=7;
 }
 delay(1);

}// loop



/*
 * @brief sends signal to the motor
 * @param "c" is integer representing the pol of motor
 * @return does not return anything
 *
 * www.Robojax.com code June 2019
 */
void driveStepper(int c)
{
     digitalWrite(Pin1, pole1[c]); 
     digitalWrite(Pin2, pole2[c]);
     digitalWrite(Pin3, pole3[c]);
     digitalWrite(Pin4, pole4[c]);   
}//driveStepper end here




UPDATE OP UPDATE OP UPDATE...

https://www.youtube.com/watch?v=P_O-0_aOXuA

zelfde meneer, lijkt overzichtelijk wiring diagram nu met verschillende kleuren voor elke verbinding

En toen had ik geen 3e pushbutton meer in huis :'(

Mvg,

kees


keithjansen

Ehh Erik, ' ben een aantal dagen bezig geweest om codes te proberen met m'n oude 28BYJ-48 stappenmotortje maar de code voor dat motortje lijkt net even anders te zijn dan voor m'n NEMA 17 dus met die laatste ga ik nu weer door om het eenvoudig te houden :-)

Mvg

kees

shooter

dan wel een vraag, welke driver zit ertussen, en hoe stuur je die aan, want de canadees gebruikt enkel 5 Volt met vier spoelen, maar een NEMA motor heeft maar 2 spoelen en moet dus ook anders aangestuurd worden. dus gebruik je een L293 of een A4988 driver.
op de laatste hoef je alleen maar een puls te zetten vandaar de vraag, en teken het even dan snap je misschien wel vanzelf hoe het aangestuurd moet worden.
liefst in fritzing
paul deelen
shooter@home.nl
making controls with codesys PLC and arduino

keithjansen

#20
Jan 06, 2021, 12:46 pm Last Edit: Jan 06, 2021, 02:39 pm by keithjansen
Ja hoi Shooter,

de NEMA 17 wordt verzorgd door een L298N dubbele H-brug driver en gevoed door een (instelbare) trafo met 12v (1000mA(12V))

deze NEMA 17 drijft met een rubber snaar de centrale projector-as met sluiter ("vlinder") van de projector aan  Op de platte kant van deze sluiter komt een plakmagneetje dat na elke 360 graden omwenteling van de sluiter een Velleman VMA308 reed switch omschakelt van 0 naar 1

UIteindelijk is het de bedoeling dat er een Arduino sketch komt waarmee de steppermotor iedere keer de projector-as zover rond draait (+- 360 graden) tot de reed switch "aanslaat" en de Arduino code de motor een seconde of 3 stopt om een digitale camera het voorstaande filmbeeldje te laten fotograferen...

  ...waarna de motor weer opnieuw gaat lopen om de projector-as weer 360 graden te laten lopen, de reed switch opnieuw aanslaat, de motor weer stopt en het volgende filmbeeldje gefotografeerd kan worden enz enz  (speciale telecine software maakt van al die foto's dan een complete film)

' kan evt complicatie optreden dat de motor weer moet gaan lopen met de reed switch nog op 1, da's dus een uitdaging ;-)

Maar daar is ook alles mee gezegd  "Zou" eigenlijk een heel eenvoudige sketch moeten zijn maar hoe?

Mvg ,

kees

P.S. foto is de allereerste test-opzet, inmiddels zijn bijna alle componenten gesitueerd op plaat multiplex van 25 x 50cm


shooter

maak een stap,
if (je reed aan is){even naar een functie dat je camera laat gaan}

wacht even (mag met delay bijv. 100 msec.
en begin weer bovenaan.
en ja ik kan het voorkauwen, maar veel liever dat je zelf een programma schrijft
het zijn 5 regels in totaal.
paul deelen
shooter@home.nl
making controls with codesys PLC and arduino

keithjansen

#22
Jan 06, 2021, 02:38 pm Last Edit: Jan 07, 2021, 11:03 am by keithjansen
 Ehh, ' heb liever dat je het "voorkauwt" als je dat niet erg vindt Shooter , met het toepassen (en evt hier en daar aanpassen) van een kant en klare code leer ik op dit moment meer dan van een code waarvan ik absoluut niet weet waar te beginnen dan tegen een lege of deels gevulde void setup en void loop aan te kijken

ik heb gelukkig al sketches met code voor het lopen vd motor en sketches met code voor een drukknop (werkt ook met switch neem ik aan) en zelfs een sketch met lopen vd motor én een drukknop maar ook dan nog is het voor een beginner als ik zowat onmogelijk een en ander te overzien, laat staan lopend te krijgen

ben er wel net in geslaagd m'n Arduino 1.8.4 IDE van een donkere achtergrond te voorzien, dat laat een aantal dingen in verschillende kleuren zien, dat leek me wel zo handig :smiley-mr-green:

verder heb ik al 9 sketches uitgeprint en in aparte alinea's van constanten, void setups en void loops uitgeknipt, dat maakt het vergelijken van de syntax van dezelfde onderdelen van verschillende sketches wel een stuk makkelijker :)

resumé:

motor CW laten lopen
motor stoppen bij reed switch op 1 (als de centrale as van de projector 360 graden heeft afgelegd)
pauze (+- 3 seconden)
reed switch code weer op 0 zetten, wsch in void loop
motor weer CW laten lopen

Mvg,

kees
 
P.S. mijn digitale camera heeft alleen maar afstandsbediening met een tablet of smartphone

Én ik heb vanmiddag net een betere en afstelbare "cameratafel" gemaakt die ik in hoogte en helling en dus waterpas kan afstellen en daarom op de optische as van het projector-objectief kan positioneren  Trouwens, dat projector-objectief projecteert het filmbeeldje direct op de sensor van de digitale camera



shooter

oke, even de foto? wat zit waar aangesloten, en wat is de driver waarschijnlijk een L293 of zo, welk programma gebruik je nu en waar loop je tegen aan.


paul deelen
shooter@home.nl
making controls with codesys PLC and arduino

MAS3

Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

keithjansen

#25
Jan 07, 2021, 11:05 am Last Edit: Jan 07, 2021, 11:06 am by keithjansen
Ehh nee, voor de NEMA 17 wordt een L298N dubbele H-brug driver gebruikt... en aansluitingen zijn op foto te zien :)

Mvg,

kees

keithjansen

#26
Jan 07, 2021, 11:32 am Last Edit: Jan 07, 2021, 05:06 pm by keithjansen
Zie foto van NEMA 17 in de projector geplaatst, op deze manier kan de snaar ook nog  losser of strakker afgesteld worden

Update...

Arduino forum wil m'n foto niet laten zien :( , wat zijn de voorwaarden voor het plaatsen van jpg's eigenlijk??

Mvg ,

kees

MAS3

Een foto moet niet te groot zijn.
Meestal zal 800x600 al meer dan genoeg zijn.

Verder kan een *.jpg bestand veel meer bevatten dan het plaatje.
Bijvoorbeeld wanneer je je mobiel gebruikt voor de betreffende foto, dan zet die er bij welk toestel er gebruikt is, en wanneer beschikbaar ook op welke GPS positie die foto gemaakt is.
Ik kon een aantal jaren geleden een vraagsteller vertellen dat hij met zijn Huawei P6 telefoon in een plaats Engeland ook scherpere foto´s moest kunnen maken die beter bruikbaar zouden zijn.
Waarop die persoon aardig uit z´n dak ging over hoe ik dat allemaal kon weten.
Met andere woorden, wanneer je met je mobiel foto´s maakt kun je je eigen privacy aardig te grabbel gooien (dat was destijds de reden dat ik die vraagsteller er op wees).
Daarom is dat nu een reden voor de forumsoftware om uit veiligheidsoverwegingen een foto die EXIF data bevat niet toe te laten.
Je kunt dit heel snel oplossen met een foto bewerk programma (tip: the Gimp).
Verklein de foto door 'm bij te snijden zodat alleen de relevante data er in staat.
Pas dan de resolutie aan zodat er niet teveel bits verstookt moeten worden door het forum om jouw fotootje aan iedereen te laten zien.
Sla je foto tenslotte op als *.PNG bestand, en voeg dat toe aan je bericht.
Sinds kort worden toegevoegde foto's automatisch in je bericht getoond.
Een *.PNG bestand kan geen EXIF data bevatten dus dat word met die conversie overboord gegooid, en het is het andere foto bestandsformaat dat op het forum is toegestaan.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

keithjansen


aha, dank je wel Mas :-)

een en ander kon ook met:  file info  in photoshop zag ik net, opslaan als PNG idem dito :-)

dit is dus de linkerkant van de omgebouwde projector waar de originele motor (en de trafo) plaats hebben  gemaakt voor de NEMA steppermotor met een poelie/snaarwiel en dat zit dan weer afstelbaar vast mbv wat mecano :-) 

Op de sluiter van de projector (de "vlinder") die je nét tussen de ketting door kunt zien komt een plakmagneetje die na elke 360 graden omwenteling de mini magnetic micro reed switch van 0 naar 1 zet

nu eerst even kijken of de foto meekomt

Mvg,

kees


 


shooter

wel opletten waar je het magneetje plaatst, want dat moet natuurlijk wel zijn dat het transport stil staat en de lamp aan is, ofwel als de haakjes de film hebben losgelaten.
paul deelen
shooter@home.nl
making controls with codesys PLC and arduino

Go Up