Show Posts
Pages: 1 ... 51 52 [53] 54 55 ... 87
781  Using Arduino / Programming Questions / Re: Millis() Timing goes way off over time. on: March 02, 2012, 04:09:38 pm
Code:
    while(millis()-previousMillis[i]<=on){   //While current time (millis()) minus Previous time is less than ON TIME
digitalWrite(relayPin[i],HIGH);  //Turn ON the relay(array)}
This while loop blocks until the current minus the start time is greater than the on time desired. If that isn't the EXACT same thing delay does, I'll eat my hat.
Remember to post it on YouTube! smiley

Code:
delay(on) ;  // wait time on,
digitalWrite(pin,HIGH);  // then turn on pin
Code:
digitalWrite(pin,HIGH);  // Turn on pin
delay(on) ;  // then wait timeon,
Code:
while(millis()-previousMillis[i]<=on) // whilst waiting time on
digitalWrite(pin,HIGH); ;  // keep (repeatedly) turning pin on

OK, I am splitting hairs here - thought it was worth a shot for the hat eating smiley
782  International / Scandinavia / Re: Hi-speed photography - Writing the timing program? on: March 02, 2012, 11:33:34 am
Bare for at vi ikke snakker forbi hindanden. "Arduino" er betegnelsen for hele systemet, bestående af et Arduino print med en Atmel chip med en boot loader, en IDE (editor med kompiler), "styresystemet" (der kalder setup og loop osv), og en nem USB opkobling. Og alle delene er opensource og må genbruges og modificeres uden frygt.

Atmel laver en bunke chips, bl.a. Atmel 8 bit processorer; AtTiny og ATMega. De er ikke opensource (skulle du have adgang til en chip fabrik smiley )

En AtMega har indbygget seriel communication UART, men de færreste pc'er disse dage har en seriel port. Der findes USB-COM port devices, og en af den slags sidder netop på Arduino boardet (de fleste -Arduino serien indholder også nogle uden).

Så .. hvis du vil lave noget som en ikke teknisk bruger skal kunne snakke med en pc/mac så skal den have USB delen. Du kan meget snedigt smiley-wink sælge USB-kabel-med-seriel seperat så prisen for din dråbe-flash enhed bliver mindre. Usb-seriel kabel kan jo købes mange steder. Men det bliver nok med en AtMega chip.
783  Using Arduino / LEDs and Multiplexing / Re: Blink without Delay at driffent times as on and off ? on: March 01, 2012, 03:02:57 pm
"not working" could be anything from smoke out of the LED to one LED blinking at the wrong rate. Presumably you are somewhere between.

The code I wrote was showing the principle by "transforming" some of your code, but it got to just a tedious editing exercise after the first few lines, so look at your code, the bit I have made and make similar edits to your code. You need to declare more arrays, too (same lazy reasoning from me).  You can not use #define as arrays, so they become ordinary array/variables
784  International / Scandinavia / Re: Hi-speed photography - Writing the timing program? on: March 01, 2012, 02:58:01 pm
Ble bare så sjarmert av at den lille tassen har både CPU, klokke og EEPROM, samt at den kunne programmeres.
Enig.

Angående dine visioner af fotogrej, jeg talte med en af mine venner i Labitat og han nævnte i flæng et par websites og en færdig Arduino Shield der gør det samme. Som så meget andet her i verden, der er ikke meget der er nyt, meget er bare ting man selv kun hør om for første gang.

Det skal ikke holde en fra fornøjelsen at gøre det selv, og heller ikke fra fornøjelsen at måske kunne gøre det om igen, lidt bedre, billigere, smartere ... go go go
785  Using Arduino / LEDs and Multiplexing / Re: Blink without Delay at driffent times as on and off ? on: February 29, 2012, 05:16:04 pm
Happy ending!  And here is the sequel :-)

You are doing the same thing 3 times. Each time with variable1, variable2 variable3 ... Using arrays avoids repeating the same code.
Variable[1] Variable[2] Variable[3] replaces the indivdual ones. That does not save anything.
But then we use Variable[idx] and let idx take on the values 1, 2, and 3.
This means your code becomes (only showing parts)
Code:
int ledPin[] = { 30, 31, 32 } ;
int ledState[] = { LOW, LOW, LOW } ;
unsigned long ofTime = { 2000, 4000 , 4000 } ;
// and so on for all

void setup() {
  for ( int idx = 0 ; idx < 3 ; idx++ )  // for all defined pins...
      pinMode(ledPin[idx],OUTPUT) ;  //  ..set them to output
}

void loop() {
  currentMillis = millis() ;
  for ( idx = 0 ; idx < 3 ; idx++ ) { // for all defined LEDs, do :
    if (currentMillis - previousMillis[idx] > interval[idx])
    {
      previousMillis[idx] = currentMillis;   

    if (ledState[idx] == LOW)
    {
      ledState[idx] = HIGH;
      interval[idx] = onTime[idx];
   :
  } // close brace that matches the for
} // end loop

So you only need to write your code once. There are a few more tricks with arrays but this will get you the essentials. 
786  International / Scandinavia / Re: Hi-speed photography - Writing the timing program? on: February 29, 2012, 04:46:31 pm
Det der med prisen er en sjov ting.  På min RS-online, som ikke er billig, koster en AtTiny85 22kr og en almindelig DIP pakke ATmega132 (som i en rigtigt Arduino) 32 kr. 10kr er selvfølgelig 10kr, men da dit projekt sikkert bruger kasser, printplade, strømregulering, stik, skruer og meget mere til ... 150? 250? synes jeg argumentet er lidt ...sjovt. Og så kommer ventiler og specille tilslutnings ledninger dertil.

Hvis man nu vil lave et par hundrede enheder til salg, så begynder indkøbsprisen blive interessant, især da nogle komponenter bliver billige i 100+ eller 1000+ kvantiteter, og så lønner det sig at shoppe.

Som hobbist - og det er jeg - så er prisen næsten ligegyldig da jeg har det sjovt med at programmere det jeg samler. Jeg får mange timers underholdning ud af en 200Kr Arduino (De kan købes billigere, men jeg støtter grundlæggerne <smiley med glorie mangler her smiley>

Lige nu erstatter jeg i mine projekter den 200+kr dyre Arduino print med en billigere kort og SMD ATMega132 hvor der kun er monteret de støtte komponenter jeg har brug for (ingen USB, stik, regulering osv...) så er jeg ned 1/4 pris uden funktions tab på et mindre printkort. Jeg må prøve et par AtTiny også, "one of these days".

Nåh, videre med dit projekt. Du skriver bare hvis programmet skal skrives om til en Tiny ( skulle ikke være nødvendigt )
787  International / Scandinavia / Re: Hi-speed photography - Writing the timing program? on: February 29, 2012, 12:26:06 pm
Har set den anden tråd. 4 digitale indgange er 16 kombinationer. Du behøver ikke 12. smiley-wink
788  International / Scandinavia / Re: Mitt første program vil ikke kjøre - hva er feil? on: February 29, 2012, 12:22:27 pm
Ditto !
789  International / Scandinavia / Re: Programvelger for valg av underprogram on: February 29, 2012, 12:19:43 pm
Nu er en Atmel chip ikke en Ohm-måler, men spænding, men jeg forstår hvad du mener at gøre smiley Hvis 12 modstande har 2% nøjagtighed, så kan en worst case være 24% forkert ... ehr... jeg har ikke tænkt det igennem, men det kan du sikkert. Jeg har ikke kigget på Atiny85 spec sheet hvad område/nøjagtighed dens analog indgang er.

Nåh, til programmering som jeg til gengæld ved mere om.  smiley-cool Jeg vil nok skrive det som
Code:
void loop() {
 val = analogRead(pin) ;
 // delay debug print og andet sjov
 if      ( val <  86 ) func1() ;
 else if ( val < 170 ) func2() ;
 else if ( val < 260 ) func3() ;
  :
 else if ( val < 937 ) func11() ;
 else                  func12() ;
}
Her er man garanteret at en, og kun en, af funktionerne bliver brugt, og man skal kun angive skifteværdierne een (1) gang. Den anden metode kan man nemmere lave et overlap eller have en værdi der ikke matcher nogen if. (Hvad sker ved værdien 300 i det forrige eksempel?)

Og bare for at blære mig  smiley-razz  (undskyld, det er ikke ment sådan ) så er
Code:
val>301&val<400
ikke helt rigtigt - det virker men det er ikke det du beder om. Et enkelt "&" er BitWise-AND som virker hvis de to udtryk er logiske. Det vil være mere korrekt at bruge "&&" som er en logisk operation AND. Det gør ingen forskel i dette eksempel, men hvis udtrykket er mere komplekst kan compileren optimere det logiske udtryk, det kan den ikke når der er bit-wise operatører i midten.

Jeg fortrækker at skrive "between" som
Code:
301 <= val && val <= 400
jeg synes det ser smukkere ud (smag og behag) og viser mere tydeligt at val ligger "mellem 301 og 400".


790  International / Scandinavia / Re: Mitt første program vil ikke kjøre - hva er feil? on: February 22, 2012, 06:02:34 pm
Når du skriver her og du har din kode highlight - så tryk på "#"-ikonet ovenfor editboksen. Den sætter et [ code ]  og [ / code ] par rundt om den, så den (a) kommer i en pæn kasse med scrollbar, og (b) ikke oversætter paranteser og lignende til smiley osv.

Da input editoren ikke kan lide lange mails (på min IE7), skriver jeg dem i notepad og cut-n-paster dem ind i input feltet. Ja, det betyder jeg selv må skrive de der kant-parantes tags. sån er livet smiley-wink

Hvis du vil bruge en resistor på switch indgang, så er det fint med mig smiley Men du kan spare det ved at buge den interne resistor som aktiveres ved at skrive til en port du har sat til input (modsigende, ja) og HIGH sætter en 20Kohm op mod +5V. Så kan kontakten trække pinen til GND.

Og så koden. Din tidligere fejl er et "}" for meget i linjen efter den som fejlmemdningen syår på. Det sker at man skal se på linjen før/efter en fejlmeldning. Jeg kunne bedre lide den end din meget korte nyere eksempel.

Glæder mig til billeder  smiley-cool
791  International / Scandinavia / Re: Hi-speed photography - Writing the timing program? on: February 21, 2012, 03:21:06 pm
Indgange der ikke er tilsluttet noget er lidt tilfældigt om de er op eller ned. Altid set input der ikke bruges til 0 eller 5V (hvis de bruges i programmet. Hvis de slet ikke bruges er det lige meget). Der kan man med fordel bruge den interne pullup, så er en ikke tilsuttet pin helt bestemt på HIGH.

(Jeg ser du får lidt grundlæggende hjælp i den anden tråd smiley )
792  Using Arduino / LEDs and Multiplexing / Re: LED and Water level control for Aquarium on: February 20, 2012, 02:23:37 pm
I looked at your code. (You can attach a file with the code if is too long to include in the message). Clearly you have hacked a lot at it to try and find the errors - lots of functions that do not get called from setup() or loop().

Anyhow, what you are doing now in your loop is
Code:
relay_on_time = millis();
if ( some test on difference between relay_on_time and looptime ) ...
:
loopTime = relay_on_time;
The difference is never going to be bigger than 1 ms and most probably 0ms most of the time, so you are never entering the if block.

I do not like the if ( shutDownTime && shutDownTime <= relay_on_time ) - too cryptic, using the true/false idiom of C, and whilst you (correctly?) rely on precedence of operators you reduntantly use brackets elsewhere. Write it more clearly, you can afford the 0.0008ms you may loose by two needless instructions (or thereabouts, if the compiler does not optimize it away) if ( shutDownTime==0 && shutDownTime <= relay_on_time )
793  Using Arduino / Programming Questions / Re: How to use a stepper command on: February 17, 2012, 04:04:30 pm
Have you tried the stepper work, by just having it sit on the table and controlling it from the Arduino - via some driver transistor/MOSFET/Driver-shield? If you do, you should find your question (as I understand it) is worrying too much.

You use the appropiate stepper library, and set up one parameters - what speed it should do (Steps/second; In the stadnard library this is given as two parameters: Number of steps for revolution and how many revolutions per minute) and then you command how many steps it should step. When it has done those steps it stops; all on its own, so to speak, it is not something coded in the library.

So your code should be quite simple: (Just code fragments, not a complete program)
Code:
Stepper FeedMotor(200,3,4,5,6) ;
  :
void loop()
  :
  if (digitalRead(NextPiece)==LOW) {
     FeedMotor.Step(100) ;
     digitalWrite(KnifeCoil,HIGH) ;
     :
     }
Or instead of the "if" you use a "for" , it will then cut N pieces.
794  International / Scandinavia / Re: Hi-speed photography - Writing the timing program? on: February 16, 2012, 11:20:54 am
Simuleret Arduino, denne Msg tråd. Den er under udvikling (brug ikke penge på den, lev med de 30 sekunders straffeboks smiley ) men kan være en hjælp for dig, da man kan single steppe og den slags.
795  International / Scandinavia / Re: Hi-speed photography - Writing the timing program? on: February 15, 2012, 02:04:36 pm
Dette ser veldig lovende ut. Kan ikke si jeg forstår det, men jeg skal teste programmet, så får du høre hvordan det fungerer.
Har du overhovedet fået din Arduino at virke? - f.eks. med at indlæse File-Example-Blink og ændre intervallet?

Quote
Lurer litt på tilkoplingen av POT-metret. Skal senterkinnen til port A0 og en av sidepinnene til GND, eller skal senterpinnen til GND og sidepinnene til A0 og A1?
Senterkinnen til A0. De andre til hhv +5V og GND. Derfor er en 100K eller 50K pot god, så trækker du ikke meget strøm (5V/100K)

For afprøve pot opkobblingen prøv så File-Example-AnalogInput.

Og så skulle du have nok erfaring at lave et bitte lille program så du kan tænd-slukke Lyset på Pin13 ved en af DIP vippe kontakterne.

Quote
Er det slik at lyset nå vil bli slått PÅ straks Arduino'en får power? Ønsker at lyset slal være AV helt til første sekvens var kjørt, men det er er liten detalj vi eventuelt kan justere senere.
Lyset tænder ved poweron. Og slukker ved knap trykket. Og det kan justeres, ja. (bare fjern den ene linje i setup modulet)
Pages: 1 ... 51 52 [53] 54 55 ... 87