-1

2 つの ASCII 文字配列を LCD 画面に完全に書き込んでいます。ただし、これら 2 つの値を比較するには、if 条件が必要です。

もともと私は単純に次のように比較しようとしました。

if(currentTemp < triggTemp)
{
   alarmTriggered = true;
} 

これが機能しなかったため、atof() を使用して ASCII 文字列から float に変換しようとしています。

ただし、これも機能したくないようです。ここで何かばかげたことを見逃していますか? 以下の必要なコード:

void main () {

    char triggTemp;
    int buttonBool = 0;
    bool alarmTriggered = false;
    char currentTemp;
    double f_triggTemp = 0;
    double f_currentTemp = 0;


  TRISC = 0x00;
  init();
  Init_lcd();



  while(1) 
  {
      //char bufferString[4];
      currentTemp = get_temp();

      f_currentTemp = atof(currentTemp);
      f_triggTemp = atof(triggTemp);

      if(f_currentTemp < f_triggTemp)
      {
          alarmTriggered = true;
      }



      if(alarmTriggered == true)
      {
          soundBuzzer();
      }
}

値は、次の形式で関数から返されます。

//some function
char bufferString[4];

sprintf(numberString, "%s.%s", itoa(bufferString,setTemp,10),
             itoa(bufferStringDec,setTempDec,10));

    return numberString;

要するに、これらの ASCII 文字の char 配列を比較して、if 条件を使用してアラームをトリガーできるようにしようとしています。

コード スニペットは短くするように努めましたが、リクエストに応じて明確にすることができます。助けてくれてありがとう。

編集:私は変数に使用atofしていることを知っています。double私のライブラリのプロトタイプはそのように設定されています。

4

3 に答える 3