Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: Pixart_OFN_A
Fork of OFN_A350_Demo by
Diff: main.cpp
- Revision:
- 2:4c248212e354
- Parent:
- 1:67d6484416a6
--- a/main.cpp Tue Oct 30 21:14:15 2018 +0000
+++ b/main.cpp Wed Feb 27 21:16:38 2019 +0000
@@ -1,71 +1,41 @@
-// ADBM-A350: Finger navigation chip.
-// Version: 1.1
-// Latest Revision Date: 18 July 2018
-// By PixArt Imaging Inc.
-// Primary Engineer: Vincent Yeh (PixArt USA)
+/* mbed Microcontroller Library
+ * Copyright (c) 2018 ARM Limited
+ * SPDX-License-Identifier: Apache-2.0
+ */
-// Copyright [2018] [Vincent Yeh]
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at:
-// http://www.apache.org/licenses/LICENSE-2.0
+/* ADBM-A350: Finger navigation chip.
+ * By PixArt Imaging Inc.
+ * Primary Engineer: Hill Chen (PixArt USA)
+ *
+ * License: Apache-2.0; http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+/* Revision History
+ * V1.0: February 27, 2019
+ * First release.
+ */
-/*
-//=======================
-//Revision History
-//=======================
-Version 1.1 -- 18 July 2018
-Added apache license notice.
+#include "mbed.h"
+#include "Pixart_OFN.h"
-Version 1.0 -- 14 June 2018
-First release.
-*/
+Serial pc(USBTX, USBRX);
+I2C i2c(I2C_SDA0, I2C_SCL0);
-#include "mbed.h"
-#include "registerArrays.h"
-//#include "I2CcommFunctions.h"
-#include "SPIcommFunctions.h"
-//Make sure you only have one of either SPIcommFunctions or I2CcommFunctions enabled. You cannot include both headers.
-
+// main() runs in its own thread in the OS
int main()
{
- pc.baud(115200); // Set baud rate to 115200. Remember to sync serial terminal baud rate to the same value.
+ bool Result = false;
+ Pixart_OFN *m_Sensor = new Pixart_OFN(&i2c, &pc, 0.25f, Result);
+ if(Result) pc.printf("\r\n\n %s %s initialization successfully\r\n", PRODUCT, MODEL);
+ else{ pc.printf("\r\n\n %s %s fail on initialization", PRODUCT, MODEL);
+ while (true) ;
+ }
- #ifdef SPImode
- IO_sel = 1; // Set IO_select pin to be HIGH for SPI.
- spi.format(8,3); // Set SPI to 8 bits with inverted polarity and phase-shifted to second edge.
- spi.frequency(100000); // Set frequency for SPI communication.
- cs = 1; // Initialize chip select as inactive.
- #endif
-
- #ifdef I2Cmode
- IO_sel = 0; // Set IO_select pin to be LOW for I2C.
- i2c.frequency(400000); // Set frequency for I2C communication.
- cs = 1; // These two pins are used to determine the device's slave ID.
- MOSI = 1;
- #endif
-
- shutdown = 0;
- writeRegister(0x3A, 0x5A); //Soft-reset the chip.
-
- pc.printf("Program START\n\r");
-
- pc.printf("ID Check: %2X\n\r", readRegister(0x00)); //Checks product ID to make sure communication protocol is working properly.
- if(readRegister(0x00) != 0x88)
- {
- pc.printf("Communication protocol error! Terminating program.\n\r");
- return 0;
- }
-
- load(initialize, initialize_size); //Load register settings from the "initialize" array (see registerArrays.h)
-
- while(1)
- {
- //pc.printf("MOTION bit: %2X\n\r", readRegister(0x02)); //Prints EVENT register for debugging.
-
- if(readRegister(0x02) & 0x80)
- {
- grabData();
- printData();
- }
+ while (true){
+#ifndef USE_CALLBACK
+ m_Sensor->periodicCallback();
+ wait_ms(250);
+#endif
}
}

ADBM-A350 | Finger-Navigation Optical Sensor