Forum Žirovskih ljubiteljev modelarstva Seznam forumov

Pogosta vprašanjaIščiSeznam članovSkupine uporabnikovRegistriraj se

 Tvoj profil Tvoj profil Zasebna sporočila Zasebna sporočila Prijava Prijava RSS Feed




Poglej naslednjo temo
Poglej prejšnjo temo
Objavi novo temo   Odgovori na to temo  Forum Žirovskih ljubiteljev modelarstva Seznam forumov » Ostalo
Avtor Sporočilo
matic.benedik
Super modelar


Pridružen/-a: 18.07. 2006, 15:24
Prispevkov: 68
Kraj: žiri

PrispevekObjavljeno: 22 Mar 2012 15:56 Odgovori s citatom Back to top

lep pozdrav.

mene zanima če ima kdo kakšne izkušnje z programiranjem v C jeziku


za maturo imam namreč nalogo meritev hitrosti med dvema točkama.

če ima kdo kakšno idejo se zelo priporočam.

lp matic
Poglej uporabnikov profil Pošlji zasebno sporočilo
Matic
Super modelar


Pridružen/-a: 09.07. 2006, 22:53
Prispevkov: 186
Kraj: Žiri

PrispevekObjavljeno: 22 Mar 2012 17:24 Odgovori s citatom Back to top

Malo bolj razloži kje imaš težavo, pa bomo videli, če se da kaj pomagat.
Mislim da ni problem programskega jezika. Rolling Eyes

LP, Matic
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
matic.benedik
Super modelar


Pridružen/-a: 18.07. 2006, 15:24
Prispevkov: 68
Kraj: žiri

PrispevekObjavljeno: 22 Mar 2012 18:12 Odgovori s citatom Back to top

predstavljaj si nalet na skakalnici tam kjer je radius ( krivina naleta) je največja hitrost skakalca. se pravi postaviš nekje v radiusu 2 fotoupora na razdalji npr 3 metre. ko skakalec prekine žarek na 1. fotouporu začne šteti, ko pa prekine drugega se štetje konča.

če ti kaj pomaga ti lahko pošljem približen načrt ki ne deluje

lp matic
Poglej uporabnikov profil Pošlji zasebno sporočilo
Matic
Super modelar


Pridružen/-a: 09.07. 2006, 22:53
Prispevkov: 186
Kraj: Žiri

PrispevekObjavljeno: 22 Mar 2012 19:26 Odgovori s citatom Back to top

Si predstavljam...
Pošlji, pa bomo pogledali, če bo kaj jasno.
Na čem moraš to narediti? Predpostavljam, da to ni PC aplikacija.
Glede na to, da gre samo za preprosto merjenje časa, naj ne bi bilo prav težko. Edina stvar, ki jo moraš vedet, je poznat način (enega izmed njih) merjenja časa na dani platformi ter poznat interface do fotocelic.
Povej podrobnosti, da sploh vemo kako pomagat. Rolling Eyes

LP, Matic
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
matic.benedik
Super modelar


Pridružen/-a: 18.07. 2006, 15:24
Prispevkov: 68
Kraj: žiri

PrispevekObjavljeno: 22 Mar 2012 20:07 Odgovori s citatom Back to top

//============================================================================
// Name : Hitrost.cpp
// Author :
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================


#include <16F628A.h>

int int_bit = 0;
int stotice = 0;
int desetice = 0;
int enice = 0;
int desetinke = 0;
int stevec1 = 0;
int cas = 65535;
int v = 0;
int a = 0;
int i = 0;
const int cifre [] = {0b01111110,0b00100100,0b11011100,0b11101100,0b10100110,0b11101010,0b11111010,0b01100100,0b11111110,0b11101110};

#use delay(clock=4M)
#FUSES XT, NOWDT, NOPUT, NOMCLR, NOPROTECT, NOCPD, NOBROWNOUT, NOLVP
#use fixed_io(b_outputs=PIN_B1, PIN_B2, PIN_B3, PIN_B4, PIN_B5, PIN_B6, PIN_B7)





#int_timer1

void timer1interrupt() {
stevec1++;
}

void izpis(desetice, enice, desetinke);

void izracun();

#INT_EXT
void senzor()
{
disable_interrupts(int_ext);
clear_interrupt(int_timer1);
enable_interrupts(int_timer1);
set_timer1(0);
int_bit = 1;

}
void izracun()
{
while(!INPUT(PIN_A0)) {
}

a = get_timer1();
disable_interrupts(int_timer1);
cas *= stevec1;
cas = cas + a;
cas /=100;
v = 7200000 / cas; //razdalja med senzorjema 2m;
stotice = v / 10000;
v %= 10000;
desetice = v / 1000;
v %= 1000;
enice = v / 100;
v %= 100;
desetinke = v / 10;
stevec1 = 0;
int_bit = 0;
i = 0;
cas = 65535;
if(stotice >= 1){
desetice = 12;
enice = 12;
desetinke = 12;
}

}








void main(void)
{

SET_TRIS_B(0b00000001);
SET_TRIS_A(0b00000001);
INPUT(PIN_B0);
setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_1 );
enable_interrupts(GLOBAL);
ext_int_edge( 0, L_TO_H);
while(true)
{
izpis(desetice, enice, desetinke);
if(int_bit == 1)
{
izracun();
}
if(i == 200)
{
clear_interrupt(int_ext);
enable_interrupts(int_ext);
ext_int_edge( 0, L_TO_H);
}
}

}




void izpis(desetice, enice, desetinke) {

if(desetice > 0)
{
output_b(cifre[desetice]);

}
delay_ms(5);
output_low(PIN_A3);
output_high(PIN_A2);
output_b(cifre[enice]);


delay_ms(5);
output_low(PIN_A2);
output_high(PIN_A1);
output_b(cifre[desetinke]);

delay_ms(5);
output_low(PIN_A1);
if(i < 202)
{
i++;
}
re
Poglej uporabnikov profil Pošlji zasebno sporočilo
Matic
Super modelar


Pridružen/-a: 09.07. 2006, 22:53
Prispevkov: 186
Kraj: Žiri

PrispevekObjavljeno: 23 Mar 2012 07:47 Odgovori s citatom Back to top

Glede na header file, vidim da je to program za PIC.
S PICom nisem delal še nikoli nič, tako da glede timerjev in teh zadev na njem nimam pojma. Rolling Eyes
Bom malce kasneje preletel tale tvoj program, če mi bo kaj jasno.
Povej s čim imaš težavo in kaj točno ti ne dela.

LP, Matic
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
matic.benedik
Super modelar


Pridružen/-a: 18.07. 2006, 15:24
Prispevkov: 68
Kraj: žiri

PrispevekObjavljeno: 23 Mar 2012 20:43 Odgovori s citatom Back to top

Tako je program je napisan za pic. Potem bi preko preprostega vezja povezal s fotocelicami
Poglej uporabnikov profil Pošlji zasebno sporočilo
Matic
Super modelar


Pridružen/-a: 09.07. 2006, 22:53
Prispevkov: 186
Kraj: Žiri

PrispevekObjavljeno: 02 Apr 2012 07:36 Odgovori s citatom Back to top

Živjo!

Par dni sem bil malce odsoten.
Torej... Povej kaj ti v zgornjem primeru ne deluje, oziroma s čim imaš probleme. Tako, da vemo kje pogledat.
Se ti zadeva "skompajla" in samo ne deluje pravilno, ali je že pri bildanju problem?

LP, Matic
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
matic.benedik
Super modelar


Pridružen/-a: 18.07. 2006, 15:24
Prispevkov: 68
Kraj: žiri

PrispevekObjavljeno: 06 Apr 2012 15:02 Odgovori s citatom Back to top

#include <16F628A.h>
int1 int_bit = 0;
int8 stotice = 0;
int8 desetice = 0;
int8 enice = 0;
int8 desetinke = 0;
int16 stevec1 = 0;
int32 cas = 65535;
int32 v = 0;
int16 a = 0;
int8 i = 0;

#use delay(clock=4M)
#FUSES XT, NOWDT, NOPUT, NOMCLR, NOPROTECT, NOCPD, NOBROWNOUT, NOLVP
#use fixed_io(b_outputs=PIN_B1, PIN_B2, PIN_B3, PIN_B4, PIN_B5, PIN_B6, PIN_B7)





//******************Preliv timerja**********************
#int_timer1

void timer1interrupt() {
stevec1++;
return;
}

void izpis(desetice, enice, desetinke);
void izracun();

#INT_EXT
void senzor()
{
disable_interrupts(int_ext);
clear_interrupt(int_timer1);
enable_interrupts(int_timer1);
set_timer1(0);
int_bit = 1;
return;
}
void izracun()
{
while( !INPUT(PIN_A0) )
{
}
a = get_timer1();
disable_interrupts(int_timer1);
cas *= stevec1;
cas = cas + a;
cas /=100;
v = 7200000 / cas; //Za razdaljo med senzorjima: 8m -28800000, za 2m - 7200000
stotice = v / 10000;
v %= 10000;
desetice = v / 1000;
v %= 1000;
enice = v / 100;
v %= 100;
desetinke = v / 10;
stevec1 = 0;
int_bit = 0;
i = 0;
cas = 65535;
if(stotice >= 1){
desetice = 12;
enice = 12;
desetinke = 12;
}
return;
}






//*******************GLAVNI********************************

void main(void)
{

SET_TRIS_B(0b00000001);
SET_TRIS_A(0b00000001);
INPUT(PIN_B0);
setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_1 );
enable_interrupts(GLOBAL);
ext_int_edge( 0, L_TO_H);
while(true)
{
izpis(desetice, enice, desetinke);
if(int_bit == 1)
{
izracun();
}
if(i == 200)
{
clear_interrupt(int_ext);
enable_interrupts(int_ext);
ext_int_edge( 0, L_TO_H);
}
}

}


//**********************MUX prikaz oziroma izpis na led prikazovalnike*******

void izpis(desetice, enice, desetinke) {

if(desetice > 0)
{
output_high(PIN_A3);
switch (desetice) {
case 0: output_B(0b01111110);
break;
case 1: output_B(0b00100100);
break;
case 2: output_B(0b11011100);
break;
case 3: output_B(0b11101100);
break;
case 4: output_B(0b10100110);
break;
case 5: output_B(0b11101010);
break;
case 6: output_B(0b11111010);
break;
case 7: output_B(0b01100100);
break;
case 8: output_B(0b11111110);
break;
case 9: output_B(0b11101110);
break;
case 15: output_B(0b00001000);
break;
case 12: output_B(0b11011010);
break;
}
}
delay_ms(5);
output_low(PIN_A3);
output_high(PIN_A2);
switch (enice) {
case 0: output_B(0b01111110);
break;
case 1: output_B(0b00100100);
break;
case 2: output_B(0b11011100);
break;
case 3: output_B(0b11101100);
break;
case 4: output_B(0b10100110);
break;
case 5: output_B(0b11101010);
break;
case 6: output_B(0b11111010);
break;
case 7: output_B(0b01100100);
break;
case 8: output_B(0b11111110);
break;
case 9: output_B(0b11101110);
break;
case 15: output_B(0b00001000);
break;
case 12: output_B(0b10010000);
break;
}
delay_ms(5);
output_low(PIN_A2);
output_high(PIN_A1);
switch (desetinke) {
case 0: output_B(0b01111110);
break;
case 1: output_B(0b00100100);
break;
case 2: output_B(0b11011100);
break;
case 3: output_B(0b11101100);
break;
case 4: output_B(0b10100110);
break;
case 5: output_B(0b11101010);
break;
case 6: output_B(0b11111010);
break;
case 7: output_B(0b01100100);
break;
case 8: output_B(0b11111110);
break;
case 9: output_B(0b11101110);
break;
case 15: output_B(0b00001000);
break;
case 12: output_B(0b10010000);
break;
}
delay_ms(5);
output_low(PIN_A1);
if(i < 202)
{
i++;
}
return;

}

evo s prijateljem sva začela povsem na novo in uspelo nama je zgoraj je delujoč program Smile

če ima kdo kakšno idejo za sestavo vezja??

uporabljen bi bil pic 16F628A
Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo

Poglej naslednjo temo
Poglej prejšnjo temo
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu


MojForum.si - brezplačno gostovanje forumov. Powered by phpBB 2.