اطلاعیه

Collapse
No announcement yet.

یه مشکل تو برنامه نویسی *کمک کنید*

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    یه مشکل تو برنامه نویسی *کمک کنید*

    سلام
    نگین هههههههه
    من تو یه do loop یه سلکت کیس بکار بردم حالا می خوام تو این سلکت کیس هر موقع مثلا از سه حالت حالت 1 اتفاق افتاد led پنج تا چشمک بزنه بعد قطع بشه . چون تو do loop دایم داره تکرار میشه چی کنم که فقط 5 بار تکرار بشه
    :read: :read:

    رفیقان قدر یکدیگر بدانید چو معلوم است شرح از بر مخوانید

    مقالات نصیحت گو همین است که سنگ انداز هجران در کمین است

    #2
    پاسخ : یه مشکل تو برنامه نویسی *کمک کنید*

    سلام
    دوست من اگر برنامت فقطهمینه خوب از لوپ بیارش بیرون.
    یه راه یگه اینه اکه با یه شرط بولین روند اجرای سوئیچ کیس رو عوض کنی مثلا قطعه کد زیر رو در نظر بگیر:
    کد:
    if (first_time) {
    switch (condition){
    case 1:
    .
    .
    first_time=0;
    break;
    case 2:
    ..
    }//end of switch
    }//end of if

    دفعه اول که برنامه شروع میشه شرط درسته و قسمت سوئیچ کیس شما اجرا میشه ولی در خود سوئیچ کیس این شرط غلط میشه در نتیجه دفعه بدی اجرا نمیشه.

    البته این یه راه سر راست بود که همیشه جواب میده ولی شما با توجه به کدی که نوشتید ممکنه بتونید یه راه بهتر پیدا کنید

    موفق باشید
    Work with what you have .Never limit yourself by things you could have had

    دیدگاه


      #3
      پاسخ : یه مشکل تو برنامه نویسی *کمک کنید*

      نه مثل اینکه خوب نگفتم
      ببینید
      من یه do loop دارم توش یه Select Case که سه حالت داره
      حالا من می خوام مثلا موقعی که از حالت 1 خارج و به حالت مثلا 2 رفت یه led قرمز 3 بار چشمک بزنه
      بعد تو اون هست تغییر نمیکنه وقتی رفت تو حالت 3 5 بار چشمک بزنه
      مشکل من اینه که چشمکش یکسرست نمیمونه

      رفیقان قدر یکدیگر بدانید چو معلوم است شرح از بر مخوانید

      مقالات نصیحت گو همین است که سنگ انداز هجران در کمین است

      دیدگاه


        #4
        پاسخ : یه مشکل تو برنامه نویسی *کمک کنید*

        درود بر شما
        برای هر کدام از case ها یک متغییر تعریف کن ، حالا متغیرها در حالت خودشان 1 و در حالتهای دیگر 0 باشند
        مثلا" اگر در حالت 1 هستید متغیر 1 برابر 1 و متغیرهای 2 و 3 برابر 0 و زمانیکه در حالت 2 هستید متغیر 2 برابر 1 و متغیرهای 1 و 3 برابر 0 می باشند و ........
        شرط چشمک زدن را 1 بودن متغیر ان حالت بزار و برای چشمک زدن از for استفاده کن
        موفق باشی
        در روزگاری که لبخند آدم ها بخاطر شکست توست برخیز تا بگریزند. کورش کبیر
        شاد بودن، تنها انتقامی است که میتوان از زندگی گرفت. ارنستو چه گوارا

        دیدگاه


          #5
          پاسخ : یه مشکل تو برنامه نویسی *کمک کنید*

          خوب اینجور که من فهمیدم شما میخواهید زمانی که یک تغییر وضعیت در سوئیچ اتفاق افتاد روتین مورد نظرتون (در اینجا چشمک زن) برای یک بار اجرا شه.

          خوب کدی که دوست عزیز pooya_ict پیشنهاد کردن خوبه فقط یه مشکلی که داره اینه که از اونجا متغییر مربوط به اون یک میمونه در سیکل های بعدی حلقه هم اجرا میشه.

          شما بهتره شرط صفر بودن متغییر مربوط به کیس رو چک کنید چون صفر بودنش نشون میده که اون کیس قبلا انتخاب نشده بعد از اینکه کیس اجرا شد در آخر متغییر مربوط به اون یک و ما بقی صفر شوند.

          به این کد نگاه کنید:
          switch (condition){
          case 0:
          if (state0==0){
          .
          .
          .
          state0=1;
          state1=0;
          state2=0;
          }
          break;
          case 1:

          حالا کد شما فقط یک با اجرا میشه مگر اینکه یک تغییر وضعیت رخ بده
          Work with what you have .Never limit yourself by things you could have had

          دیدگاه


            #6
            پاسخ : یه مشکل تو برنامه نویسی *کمک کنید*

            ممنون از وقتی که می زارید
            ببینید اینجور میگم
            من تو سه موقعیت قرار دارم حالت 1 و 2 و3 توجه خود هر کدوم از حالات یه بازه مثلا بین 1 تا 10 داره
            حالا وقتی مثلا از حالت 1 به 2 میرم می خوام که یه led سه بار چشمک بزنه و این عمل برای هر کدوم از این سه حالت یه نوعی باشه .
            حالا چون من در حالت 2 هستم چون یه بازه 10 تایی داره هی این led چشمک میزنه تا اینکه بره یه حالت دیگه

            اگه میشه با یه مثال بگید بهتره :read: :read:

            رفیقان قدر یکدیگر بدانید چو معلوم است شرح از بر مخوانید

            مقالات نصیحت گو همین است که سنگ انداز هجران در کمین است

            دیدگاه


              #7
              پاسخ : یه مشکل تو برنامه نویسی *کمک کنید*

              با چه زبانی برنامه می نویسی basic یا C ؟
              در روزگاری که لبخند آدم ها بخاطر شکست توست برخیز تا بگریزند. کورش کبیر
              شاد بودن، تنها انتقامی است که میتوان از زندگی گرفت. ارنستو چه گوارا

              دیدگاه


                #8
                پاسخ : یه مشکل تو برنامه نویسی *کمک کنید*

                basic

                رفیقان قدر یکدیگر بدانید چو معلوم است شرح از بر مخوانید

                مقالات نصیحت گو همین است که سنگ انداز هجران در کمین است

                دیدگاه


                  #9
                  پاسخ : یه مشکل تو برنامه نویسی *کمک کنید*

                  نوشته اصلی توسط pooya_ict
                  با چه زبانی برنامه می نویسی basic یا C ؟
                  سواال کردی ولی جوابی نددادی :surprised: :eek:

                  رفیقان قدر یکدیگر بدانید چو معلوم است شرح از بر مخوانید

                  مقالات نصیحت گو همین است که سنگ انداز هجران در کمین است

                  دیدگاه


                    #10
                    پاسخ : یه مشکل تو برنامه نویسی *کمک کنید*

                    کد:
                    select case x
                    case test1:
                    if A1=1 then 
                    for i=1 to 3 
                    porta.1=1
                    waitms 100
                    porta.1=0
                    waitms200
                    next
                    end if
                    A1=0
                    A2=1
                    A3=1
                    
                    statement
                    .
                    .
                    case test2:
                    if A2=1 then 
                    for i=1 to 5 
                    porta.1=1
                    waitms 100
                    porta.1=0
                    waitms200
                    next
                    end if
                    A1=1
                    A2=0
                    A3=1
                    
                    statement
                    .
                    .
                    case test3:
                    if A1=1 then 
                    for i=1 to 7 
                    porta.1=1
                    waitms 100
                    porta.1=0
                    waitms200
                    next
                    end if
                    A1=1
                    A2=1
                    A3=0
                    
                    statement
                    .
                    .
                    در روزگاری که لبخند آدم ها بخاطر شکست توست برخیز تا بگریزند. کورش کبیر
                    شاد بودن، تنها انتقامی است که میتوان از زندگی گرفت. ارنستو چه گوارا

                    دیدگاه


                      #11
                      پاسخ : یه مشکل تو برنامه نویسی *کمک کنید*

                      سلام اگه خود اصل سوال رو بذارید بهتر میشه کمکتون کرد
                      شما میتونید از تکنیک سابروتین استفاده کنید
                      برا مثال
                      اگر A=1 شد میخوای 3بار چشمک
                      اگر A=2 شد میخوای 6بار چشمک
                      اگر A=3 شد میخوای 9بار چشمک
                      a رو selectcase میکنی و داخل do loop میذاری
                      اگر a=1شدمیای i=3بعد میگی call sub1
                      اگر a=2شدمیای i=6بعد میگی call sub1
                      اگر a=3شدمیای i=9بعد میگی call sub1
                      در برنامه sub1مینویسی
                      sub1:
                      for j=0 to i
                      toggel portb.1
                      next j
                      end sub

                      دیدگاه


                        #12
                        پاسخ : یه مشکل تو برنامه نویسی *کمک کنید*

                        من بیسیک بلد نیستم ولی فکر کنم یه کدی شبیه این بدردتون بخوره:


                        Dim BlinkCnt As Integer ' Count of blinks
                        Dim CurState As Integer ' Current state
                        Dim BlinkDelay As Integer ' LED On/Off wait time
                        Dim BlinkTmr As Integer ' Temporarily used for blinking
                        Dim NewState As Integer ' New state

                        ' Startup of program
                        BlinkCnt = 0
                        BlinkTmr = 0

                        ' Consider New State into NewState variable

                        .....


                        If NewState <> CurState Then ' State changed
                        Select Case CurState
                        Case 1:
                        BlinkCnt = 3
                        BlinkDelay = 300 ' 1.5 Hz Blinking
                        Case 2:
                        BlinkCnt = 5
                        BlinkDelay = 1000 ' 0.5 Hz Blinking
                        Case 3:
                        BlinkCnt = -1 ' forever
                        BlinkDelay = 100 ' 5 Hz Blinking
                        End select
                        CurState = NewState
                        End if

                        ' Apply Blinks
                        If BlinkTmr > 0 Then
                        BlinkTmr = BlinkTmr - 1
                        Else
                        BlinkTmr = BlinkDelay
                        If BlinkCnt <> 0 Then
                        Toggle Portb.1
                        If Portb.1 = 0 Then
                        If BlinkCnt > 0 Then
                        BlinkCnt = BlinkCnt - 1
                        End if
                        End if
                        End if
                        End if
                        waitms 1


                        اینجوری شما میتونین حتی سرعت چشمک زدن رو هم مشخص کنین.

                        دیدگاه


                          #13
                          پاسخ : یه مشکل تو برنامه نویسی *کمک کنید*

                          من یه فکری کردم معادل do while که تو زبان سی هست تو بسکام چی میشه گذاشت اینو بگید حله . کاملا . :wow: :read:
                          چون دیدم که do while تو بسکام جواب نمیده ارور میده
                          خوبه یه کامپایلر بیاد که توش هم بیسیک باشه هم سی نه؟ :mrgreen:

                          دوستان گفتند برنامه
                          کد:
                           Select Case Temp_final
                             Case Is =< 20 :
                          port a.1=1
                          و....
                          حالا چون ممکن من تو مثلا این اولی 10 دقیقه میمونم واسه همین 10 دقیقه led روشن است.
                          من میخوام 3 تا چشمک بزنه و خاموش بشه که بفهمم تو اولیه و بقیه ماجرا که تو بالا گفتم

                          رفیقان قدر یکدیگر بدانید چو معلوم است شرح از بر مخوانید

                          مقالات نصیحت گو همین است که سنگ انداز هجران در کمین است

                          دیدگاه


                            #14
                            پاسخ : یه مشکل تو برنامه نویسی *کمک کنید*

                            نوشته اصلی توسط pooya_ict
                            کد:
                            select case x
                            case test1:
                            if A1=1 then 
                            for i=1 to 3 
                            porta.1=1
                            waitms 100
                            porta.1=0
                            waitms200
                            next
                            end if
                            A1=0
                            A2=1
                            A3=1
                            نشد . چون این دستور شما مثل کلید ولی من گفتم یه بازه داره اون بازه اعداد زیادی داره یه صفر ویک نیست

                            رفیقان قدر یکدیگر بدانید چو معلوم است شرح از بر مخوانید

                            مقالات نصیحت گو همین است که سنگ انداز هجران در کمین است

                            دیدگاه


                              #15
                              پاسخ : یه مشکل تو برنامه نویسی *کمک کنید*

                              دوست عزیز
                              if A1=1 then
                              for i=1 to 3
                              porta.1=1
                              waitms 100
                              porta.1=0
                              waitms200
                              next
                              end if
                              A1=0
                              A2=1
                              A3=1
                              برای روشن و خاموش شدن LED می باشد و بقیه دستورات خود را در ادامه این دستورات بنویسید

                              در بیسیک :
                              Do
                              دستورات
                              شرط Loop until
                              در روزگاری که لبخند آدم ها بخاطر شکست توست برخیز تا بگریزند. کورش کبیر
                              شاد بودن، تنها انتقامی است که میتوان از زندگی گرفت. ارنستو چه گوارا

                              دیدگاه

                              لطفا صبر کنید...
                              X