Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - crywolf

Pages: 1 [2] 3 4 ... 24
9
ผมใช้อยู่ครับ ใช้ STM32F0 F3 F4 ใช้กับ FreeRTOS + FreeModbus
ไว้ว่างๆเดี๋ยวเอามาลงให้ครับ

10
ใช้ RF24L01 ได้ครับ ไม่ต้องเดินสายด้วย
ฝั่ง PC ก็ใช้ RS-232 หรือ USB
ตัวอย่างโปรแกรมในเวปเยอะครับ ลองหาๆดู

11
ใช้ RS-485 ครับ ฝั่งคอมพิวเวตอร์ใช้ตัวแปลง USB-to-RS485  ส่วนสายสัญญาณใช้สายชีลด์ 2 คอร์ หรือจะใช้สายโทรศัพท์ก็ได้
ส่วนรูปแบบการรับส่ง (Protocol) ก็ออกแบบเอาเอง หรือจะใช้ที่นิยมกัน เช่น Modbus

12
น่าจะประมาณนี้

Code: [Select]
int PWMValue;

void loop()
{
  fuzzy->setInput(1,Error);
  fuzzy->setInput(2,dError);         

  fuzzy->fuzzify();

  Duty = fuzzy->defuzzify(1);
/*
  DutyPrevious = DutyNow;       
  DutyNow = Duty;
  PWMValue = DutyPrevious + DutyNow;   
*/
if((PWMValue+Duty)>=0)&&((PWMValue+Duty)<=255)
{
PWMValue += Duty;
}

  analogWrite(PWMPin, PWMValue);
  delay(1000);
}

13
ตามที่ท่าน avr_lover บอกครับ เอาโค๊ดมา เดี๋ยวมีคนช่วยแก้
เขียน Fuzzy ได้ PWM ก็เป็นเรื่องง่ายแล้วครับ
ถ้ามาลอยๆแบบนี้ผมจะตอบว่าใช้โค๊ดนี้ครับ

PWM += FuzzyOutput;

14
น่าจะมีสัญญาณออกมามั้งนะ ลองแบบนี้ดูครับ

Code: [Select]
  while(HAL_I2C_GetState(&hi2c1) != HAL_I2C_STATE_READY);
  while(HAL_I2C_IsDeviceReady(&hi2c1, 0xA0, 20, 100) != HAL_OK);

  if(HAL_I2C_Mem_Write(&hi2c1, 0xA0, 0, 1, &my_data[0], 3, 100) != HAL_OK)
    {
      Error_Handler();
    }

  if(HAL_I2C_Mem_Read(&hi2c1, 0xA0, 0, 1, &my_data_receive[0], 3, 100) != HAL_OK)
    {
      Error_Handler();
    }

15
ขา Address ของ IC ต่อยังไงครับ Address Hardware กับ Software ตรงกันป่าว
i2c initial ถูกรึป่าวครับ Config ขาสัญญาณตรงรึป่าว

เอาไฟล์มาดูหน่อยครับ

16
เปลี่ยนค่า R2 กับ R3 ครับ ใช้สัก 1Kohm ทั้ง 2 ตัว
ถ้ายังติดอยู่ลองเช็คว่า PWM เป็น 0 มัน 0 จริงๆรึป่าว
หรือยังมีพัลล์ออกมา ลองถอดสัญญาณ PWM ออกดูครับ

Pages: 1 [2] 3 4 ... 24