Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 1642|回復: 0
打印 上一主題 下一主題

Sensor 傳回比較的問題?

[複製鏈接]
跳轉到指定樓層
1#
發表於 2014-11-21 12:14:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最後由 havy 於 2014-11-21 12:17 編輯

Sensor 傳回比較的問題?

目的:由電壓及電流讀取值;然後換算為功率(P=I*V),程序碼如下~

問題:sensor 回傳的值沒問題;換算丟入P0&Pn 值沒問題<==serial monitor 觀查皆正確。

             執行上卻沒有辦法得到if 判斷條件(因為P0&Pn改變皆是同時的)後執行PWM+-結果.請教各位大神,幫忙檢視程式碼那裡寫錯了謝謝

========Code================================

float P0 = 0;

float Pn = 0;

int pwm=9;           // pwm output to mosfet

void setup()

{

TCCR1B = TCCR1B & 0b11111000 | 0x01; // setting prescaar for31.372KHz pwm

Serial.begin(9600);  // Openserial communications and wait for port to open:

pinMode(pwm,OUTPUT);

}

void loop()

{

int P[5],i,d;

float pwm_d=0;

intsensor1 =analogRead(0);

intsensor2 =analogRead(1);

float Solar_volt = sensor1*25/1024;

float Solar_curr = 0.0488281*sensor2-25;

analogWrite(pwm,127);  //set 50%Duty ration for MOSFET switch

Serial.print("Duty ratio is 50%");

P0= Solar_volt*Solar_curr; //read P0

for(i=0;i<5;i++)   

  {

   P=P0;

   if (P!=P0)

    {

     Pn=P;

     break;

    }

  }

while(P0<Pn)

  {

   for(d=127;d<=179;d++)

   analogWrite(pwm,d);

   delay(100);

   if(P0 == Pn)

    {

     analogWrite(pwm,d);

     pwm_d=d/256*100;

     Serial.print("Duty ratio is=/n");

     Serial.println(pwm_d);

     Serial.print(P0);

     Serial.print(Pn);

     break;

    }

  }

while(P0>Pn)

  {

   for(d=179;d<=0;d++)

   analogWrite(pwm,d);

   delay(100);

   if(P0 == Pn)

    {

     analogWrite(pwm,d);

     pwm_d=d/256*100;

     Serial.print("Duty ratio is=/n");

     Serial.println(pwm_d);

     Serial.print(P0);

     Serial.print(Pn);

     break;

    }

  }

delay(1000);

}



您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2025-1-31 10:50 , Processed in 0.295886 second(s), 8 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表