Author Topic: Помош за проект за факултет  (Read 787 times)

Offline Bojan

  • Топ Експерт
  • *****
  • Posts: 3235
  • Gender: Male
  • Turn it ON and keep it ON
Помош за проект за факултет
« Opened on 29.11.2012, Thursday, 03:43:20 »
Значи треба да се прави склоп кој што ке дели плочки со дупка и без дупка на посебни места, сакам да користам пик за тоа и напишав некој ред во MikroC арно ама не функционира како што треба, дали е до пикот дали е до кодот стварно незнам. првин не функционираше како што треба па тоа else на крај од програмот што е го коментирав и делот за лево работеше ок, го тргнав коментарот од тоа Else и почна да зафркава пак, или само работеше делот за лево, само се пушташе, некој пат само еден излез ке беше на логичка единица, и правење на мали измени во кодот како додавање на delay скроз го менуваше функционирањето на склопот. па дали знае некој што би можело да биде проблемот?

Code: [Select]
bit oldstate;
bit loop;
void left()
{
oldstate=1;
RA0_bit = 1;                    //motor starts to turn left
do
{

if (PORTB.b2==0)               // RA2=0 on left end position
{
PORTA = 0;                     //on left end position RA0=0
delay_ms (100);                //motor stop time
RA1_bit = 1;                   //motor starts to turn right RA1=1
loop=1;
do
{
if (PORTB.b3==0)              //home position of the motor
{
   PORTA = 0;
   delay_ms (50);
   oldstate=0;
   loop=0;
}}
while(loop==1);
}}
while(oldstate==1);
}

//////////////////////////////////////////////////////////////////////////////////////////////


void right()
{
oldstate=1;
RA1_bit = 1;                    //motor starts to turn right
do
{

if (PORTB.b4==0)               // RA4=0 on right end position
{
PORTA = 0;                     //on right end position RA0=0
delay_ms (100);                //motor stop time
RA0_bit = 1;                   //motor starts to turn right RA0=1
loop=1;
do
{
if (PORTB.b3==0)              //home position of the motor
{
   PORTA = 0;
   delay_ms (50);
   oldstate=0;
   loop=0;
}}
while(loop==1);
}}
while(oldstate==1);
}
////////////////////////////////////////////////////////////////////////////////////


void main() {                         //pocetok na glavna programa
TRISB = 0xff;                            //PORTB Output
TRISA = 0x00;                            //PORTA Input
CMCON = 0x07;                         //turn off comparators
PORTA = 0;                            //PORTB==0
oldstate=0;
loop=0;
do
{
if (PORTB.b1==0)             //is there a cube?
{
delay_ms (100);
if (PORTA.b0==0)
{                             //is tere a hole in it?
left ();
}                              //if there is a hole in it it moves right
}
else (right ());
} while (1);
}


иначе користам PIC16F628a со внатрешен осцилатор од 4MHz
Теоријата е ,кога се знае се,а ништо не функционира.Праксата е кога се функционира ,а не се знае зошто.Ние во Македонија успешно ја спојуваме теоријата и праксата ,при што ништо не функционира и никој не знае зошто!!!
(позајмено од batka)

Offline i_ivica

  • Нов член
  • *
  • Posts: 22
  • Gender: Male
Одг: Помош за проект за факултет
« Reply #1 on 29.11.2012, Thursday, 10:34:40 (Edited 29.11.2012, Thursday, 10:53:03) »
Според твојот код, најнапред проверуваш дали има плочка, а потоа дали плочката има дупка или не. Доколку има дупка ги праќаш лево, доколку нема десно.
Грешката ти е кај else, го имаш ставено на погрешно место. Во овој случај десно ќе праќа доколку немаш плочка.
Избриши ја едната заграда, {, и стави ја после else. Вака од прилика:

    
Code: [Select]
do
  {
    if (PORTB.b1==0)             //is there a cube?
    {
      delay_ms (100);
      if (PORTA.b0==0)          //is tere a hole in it?
      {                            
        left ();        //if there is a hole in it it moves left
      } else right (); //if there isn't a hole in it it moves right
    }
  } while (1);

Offline Devil

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 5329
  • Gender: Male
    • Македонски форум за електроника
како ќе детектира системот дека има плоча воопшто, како ќе детектира системот дека плочата има дупка, мислам како ти е тоа изведено, ако е со прекинувач имаш библиотека за прекинувач, ако е со светлина нешто, користи AD библиотека
Jас не сум себичен, помагам. Помагај и ти !

Секоја куќа си има свои куќни правила.Почитувај ги куќните правила!

Offline Bojan

  • Топ Експерт
  • *****
  • Posts: 3235
  • Gender: Male
  • Turn it ON and keep it ON
Одг: Помош за проект за факултет
« Reply #3 on 29.11.2012, Thursday, 20:02:03 (Edited 30.11.2012, Friday, 18:12:27) »
дали ке има плочка ке се проверува со прекинувач, дали има дупка со фото сензор ке се проверува, на излез од него ке има 1/0...

Споено мислење: 30.11.2012, Friday, 18:12:27
Софтверот проработе после 8+ саати дебагирање... фала за помошта...и темата под клуч  8)

иначе да се фалам ова ми е прв проект што јас сум го пишувал (со помош) што проработел како што сакам :)
Теоријата е ,кога се знае се,а ништо не функционира.Праксата е кога се функционира ,а не се знае зошто.Ние во Македонија успешно ја спојуваме теоријата и праксата ,при што ништо не функционира и никој не знае зошто!!!
(позајмено од batka)