BASIC4MCU | 센서 | 기타센서 | ATmega128 코드비젼 - HX711 - UART
페이지 정보
작성자 master 작성일2018-03-12 23:42 조회3,631회 댓글0건본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-03-12 오후 11:43:11// by Ok-Hyun Park#include <mega128.h>#include <delay.h>#include <stdio.h>//// Hx711.DIN-pin#A1// Hx711.SCK-pin#A0//#define U08 unsigned char#define U32 unsigned long//#define DIN (PINA&1) // PA0#define SCK_1 PORTA|=2 // PA1#define SCK_0 PORTA&=~2 // PA1//U32 offset=0;float scale=742.0;////char RX0_char(void){ while(!(UCSR0A&0x80)); return UDR0; }void TX0_char(char c){ while(!(UCSR0A&0x20)); UDR0=c; }void TX0_STR(char *s){ while(*s)TX0_char(*s++); }//U32 getValue(){U08 i; U32 data=0;while(DIN); // wait for Readyfor(i=0;i<24;i++){ SCK_1; if(DIN)data|=0x800000>>i; SCK_0; }SCK_1; SCK_0; // 25클럭 // Next Conversion:CH.A, Gain:128//SCK_1; SCK_0; // 26클럭 // Next Conversion:CH.B, Gain:32//SCK_1; SCK_0; // 27클럭 // Next Conversion:CH.B, Gain:64data^=0x800000; // 2'보수return data;}//void setOffset(){ offset=getValue(); }void setScale(float s){ scale=s; }//float getGram(U08 times){long val; U32 sum=0; U08 i;for(i=0;i<times;i++)sum+=getValue();sum/=times;val=sum-offset;return (float)val/scale;}//void HX711init(){DDRA=0x02; // SCK // PA1SCK_1; delay_us(100); SCK_0; // 60us 이상 POWER DOWN 후 Nomal ModesetOffset(); setOffset(); // 2번째 변환 결과로 Offset 적용}//void main(){U08 str[30]; float f;UCSR0B=0x08; UBRR0L=103; // 9600HX711init();while(1){f=getGram(32); // 32번 읽어서 평균sprintf(str,"%.1f g\r\n",f); TX0_STR(str); // 소숫점이하 자릿수=1delay_ms(200);}}
댓글 0
조회수 3,631등록된 댓글이 없습니다.