キーボードから入力した文字が、 アルファベットならリセット信号送信、 数字なら後の計算をして設定信号を送信、 としたいのですが、 isAlphaの判定が上手くいかず、 アルファベットを入力しても、 0が入力された動作をしますが何故でしょうか? void loop() { String str; //string 文字列 int deg; //beam direction -90~0~90degree double pitch = 0.6; //element interval in wave length、0.5rambda=normal vlue double PD; //element interval in phase distance 隣接エレメントの位相距離 if( Serial.available() > 0 ) { //読み込み情報の有無確認 str = Serial.readStringUntil('¥n'); //シリアルポートの値を文字列へ str.trim(); // 前後の空白を削除 deg = str.toInt(); //文字列を数値に変換 if(isAlpha(deg)){ char buff0[3] = {0x00,0x00,0x81}; //soft_reset for all chips on SPI bus SPI.beginTransaction(SPISettings(500000, MSBFIRST, SPI_MODE0)); //clock=500kHz, MSB_first, clock立ち上がりエッジ //10=SS, 11=MOSI, 12=MISO, 13=SCK digitalWrite(CS_PIN, LOW);//CS_PINをLOWにして通信開始を通知 SPI.transfer(buff0,3);//1byte=8bit単位で3Byte分のData出力 digitalWrite(CS_PIN, HIGH);//CS_PINをHIGHにして通信終了を通知 SPI.endTransaction(); } PD = pitch/0.5*PI*sin(deg*PI/180)*180/PI; //ビーム角度をdsinθで位相差角度に変換 double pd0 = PD*0-360*floor(PD*0/360); //n倍して0~360の範囲に納めるθ = θ - 2π * floor(θ / 2π) double pd1 = PD*1-360*floor(PD*1/360); //n倍して0~360の範囲に納める double pd2 = PD*2-360*floor(PD*2/360); //n倍して0~360の範囲に納める double pd3 = PD*3-360*floor(PD*3/360); //n倍して0~360の範囲に納める double pd4 = PD*4-360*floor(PD*4/360); //n倍して0~360の範囲に納める double pd5 = PD*5-360*floor(PD*5/360); //n倍して0~360の範囲に納める double pd6 = PD*6-360*floor(PD*6/360); //n倍して0~360の範囲に納める double pd7 = PD*7-360*floor(PD*7/360); //n倍して0~360の範囲に納める double EleArray[8] = {pd0, pd1, pd2, pd3, pd4, pd5, pd6, pd7}; //各エレメントに必要な位相の相対値
C言語関連