int main(int argc, char** argv)
{
  ros::init(argc, argv, "averaging");

  AveragingAction averaging(ros::this_node::getName());
  ros::spin();

  return 0;
}
Example #2
0
/**
 * sensor_config: - setting sensor measurement parameters
 * @rx_msg: pointer to recive message structure
 */
char sensor_config(struct canmsg_t *rx_msg, struct fsm *fsm)
{
  unsigned char i = 0;
  
  /* if recived message is IDN request, send idn_msg */
  if (rx_msg->id[0] == IDN_RQ) {  
    if (sja1000p_pre_write_config(&idn_msg))
      return -1;
    
    sja1000p_send_msg();
    
#ifdef DEBUG
    CANMSG("IDN? answer OK");
#endif
  } else if (rx_msg->id[0] == MY_ID) {
    /* if recived message is MY_ID = ADC configuration */
    
    /* decode and save number of samples for every channel from msg ID */
      sen_cfg.samples[0] = averaging((rx_msg->id[2] >> 3) & 7);
      sen_cfg.samples[1] = averaging(rx_msg->id[2] & 7);
      sen_cfg.samples[2] = averaging((rx_msg->id[3] >> 2) & 7);
    
    /* if at least one sample for one channel will be measured, continue in decoding */
    if (sen_cfg.samples[0] || sen_cfg.samples[1] || sen_cfg.samples[2]) {
      
      /* save RX msg ID */
      for (i = 0; i < 4; i++) {
        sen_cfg.rx_msg_id[i] = rx_msg->id[i];
      }
      
      /* decode and save treshold value from msg ID */
      sen_cfg.treshold = rx_msg->id[1];
      
      /* decode and save channel with overflow control from msg ID */
      sen_cfg.treshold_channel = (rx_msg->id[2] >> 6) & 0x03;
      
      /* decode and save delivery parameter from msg ID */
      sen_cfg.delivery = (rx_msg->id[3] >> 1) & 0x01;
      
      /* start FSM measurement */
      fsm->measurement_start = true;
      
#ifdef DEBUG
      CANMSG("Sensor config OK");
#endif
    }
  }
Example #3
0
void CCD_TASK(void *p_arg)
{
  (void)p_arg;
	uint8_t Track_Midline_value,A;
		CCD_Restet();
	while(1)
	{                    
		CCD_gather(); 
		CCD_Filtering();
		Data_binarization(averaging());
	  Track_Midline_value = Track_Midline();
		A = Track_Midline_value;
		printf("Track_Midline_value = %d\n",A);
		OSMboxPost(Str_Box_2,&Track_Midline_value);
   OSTimeDlyHMSM(0,0,0,30);		
	}
}
Example #4
0
int main()
{
	
	uint8_t i,Track_Midline_value,A;
	DelayInit();
	GPIO_QuickInit(HW_GPIOE,0,kGPIO_Mode_OPP);
	GPIO_WriteBit(HW_GPIOE,0,0);
	

	GPIO_QuickInit(HW_GPIOB,2,kGPIO_Mode_OPP);
	GPIO_QuickInit(HW_GPIOB,4,kGPIO_Mode_OPP);
	CCD_SI(0);
  CCD_CLK(0);
	
	UART_QuickInit(UART0_RX_PA15_TX_PA14, 115200);

	ADC_QuickInit(ADC0_SE8_PB0,kADC_SingleDiff8or9);

	CCD_Restet();
  while(1)
	{
		  //CCD();
		  CCD_gather(); 
		  CCD_Filtering();

		  Data_binarization(averaging());
		

			for(i=0;i<128;i++)
		{
      if(CCD_filtering_data[127]==0xff)
			{
        CCD_filtering_data[127]=0xfe;
      }
			UART_WriteByte(HW_UART0,CCD_filtering_data[i]);
    }
		UART_WriteByte(HW_UART0,0xff);
		
		
	
//		Track_Midline_value = Track_Midline();
//		A = Track_Midline_value;
//		printf("Track_Midline_value = %d\n",A);
  }
}