PATENT DOCUMENT

Publication Number: US-10599223-B1
Application Number: US-201816146384-A
Country: US
Kind Code: B1

Title: Button providing force sensing and/or haptic output

Abstract:
A module includes a permanent magnet biased electromagnetic haptic engine, a constraint, and a force sensor. The force sensor includes a stator and a shuttle. The constraint is coupled to the stator and the shuttle. The force sensor is at least partially attached to the permanent magnet biased electromagnetic haptic engine and configured to sense a force applied to the module. The constraint is configured to constrain closure of a gap between the stator and the shuttle and bias the shuttle toward a rest position in which the shuttle is separated from the stator by the gap.

Claims:
What is claimed is: 
     
       1. A module, comprising:
 a permanent magnet biased electromagnetic haptic engine, comprising:
 a stator defining a channel; and 
 a shuttle configured to move within the channel; 
 
 a constraint coupled to the stator and the shuttle; and 
 a force sensor at least partially attached to the permanent magnet biased electromagnetic haptic engine and configured to sense a force applied to the module; wherein: 
 the constraint is configured to constrain closure of a gap between the stator and the shuttle and bias the shuttle toward a rest position in which the shuttle is separated from the stator by the gap; and 
 the constraint is attached to a first side of the stator that faces away from the channel, and unattached to a second side of the stator that faces the shuttle, the first side opposite the second side. 
 
     
     
       2. The module of  claim 1 , wherein the stator comprises:
 permanent magnets positioned on first opposite sides of the shuttle; and 
 coils positioned on at least one side of the shuttle. 
 
     
     
       3. The module of  claim 1 , further comprising:
 a button having a user interaction surface connected to a button attachment member; wherein: 
 the user interaction surface extends parallel to an axis along which the shuttle translates; and 
 the button attachment member extends transverse to the axis along which the shuttle translates. 
 
     
     
       4. The module of  claim 1 , further comprising:
 a button having a user interaction surface connected to a button attachment member; wherein: 
 the user interaction surface extends transverse to an axis along which the shuttle translates; and 
 the button attachment member extends parallel to the axis along which the shuttle translates. 
 
     
     
       5. A module, comprising:
 a haptic engine having a stationary portion and a movable portion, the movable portion configured to move linearly, when the haptic engine is stimulated by an electrical signal, to provide a haptic output; 
 a force sensor at least partially attached to the haptic engine and configured to sense a force applied to the module; and 
 a constraint configured to constrain movement of the movable portion relative to the stationary portion and bias the movable portion toward a rest position in which the movable portion is separated from the stationary portion by a gap; wherein, 
 the constraint is unattached to a first side of the movable portion, which first side is transverse to a direction of the linear movement of the movable portion. 
 
     
     
       6. The module of  claim 5 , wherein:
 the constraint comprises a flexure extending in a direction transverse to the direction of the linear movement of the movable portion; 
 the flexure connects at least one side of the movable portion, other than the first side, to the stationary portion. 
 
     
     
       7. The module of  claim 5 , wherein the constraint is configured to provide a first stiffness opposing the linear movement of the movable portion. 
     
     
       8. The module of  claim 7 , further comprising:
 a button attached to the movable portion of the haptic engine; wherein: 
 the force applied to the module comprises a button press; and 
 the constraint is configured to provide a second stiffness opposing the force applied to the button. 
 
     
     
       9. The module of  claim 5 , further comprising:
 a button attached to the movable portion of the haptic engine; wherein: 
 the force applied to the module comprises a button press; and 
 the movable portion is configured to move transverse to a direction of the button press when the haptic engine is stimulated by the electrical signal. 
 
     
     
       10. The module of  claim 5 , further comprising:
 a button attached to the movable portion of the haptic engine; wherein: 
 the force applied to the module comprises a button press; and 
 the movable portion is configured to move parallel to a direction of the button press when the haptic engine is stimulated by the electrical signal. 
 
     
     
       11. The module of  claim 5 , wherein:
 the force sensor is configured to produce an output signal in response to sensing the force applied to the module; and 
 the electrical signal is received by the haptic engine in response to the output signal produced by the force sensor. 
 
     
     
       12. The module of  claim 5 , wherein the constraint comprises a metal flexure. 
     
     
       13. The module of  claim 5 , wherein:
 the force sensor comprises a strain sensor; and 
 the strain sensor is attached to and flexes with the stationary portion. 
 
     
     
       14. The module of  claim 5 , wherein:
 the force sensor comprises a capacitive force sensor; and 
 the capacitive force sensor comprises:
 a first electrode attached to the stationary portion; and 
 a second electrode attached to the movable portion. 
 
 
     
     
       15. A method of providing a haptic response to a user, comprising:
 constraining relative motion between a stationary portion and a movable portion of a haptic engine, to bias the movable portion toward a rest position in which the movable portion is separated from the stationary portion by a gap, and to constrain closure of the gap; 
 determining a force applied to a button using a force sensor, the button mechanically coupled to the movable portion, and the force sensor mechanically coupled to the stationary portion; 
 determining the determined force matches a predetermined force; 
 identifying a haptic actuation waveform associated with the predetermined force; and 
 applying the haptic actuation waveform to the haptic engine; wherein:
 the relative motion between the stationary portion and the movable portion is constrained to translation of the movable portion along an axis. 
 
 
     
     
       16. The method of  claim 15 , wherein:
 the force sensor comprises at least two force sensing elements positioned at different locations relative to a user interaction surface of the button; 
 the force is determined using different outputs of the at least two force sensing elements; 
 determining the force comprises determining an amount of force; and 
 determining the determined force matches the predetermined force comprises determining the determined amount of force matches a predetermined amount of force. 
 
     
     
       17. The method of  claim 15 , wherein:
 the force sensor comprises at least two force sensing elements positioned at different locations relative to a user interaction surface of the button; 
 the force is determined using different outputs of the at least two force sensing elements; 
 determining the force comprises determining a force location; and 
 determining the determined force matches the predetermined force comprises determining the determined force location matches a predetermined force location. 
 
     
     
       18. The method of  claim 15 , wherein:
 determining the force comprises determining a force pattern; and 
 determining the determined force matches the predetermined force comprises determining the determined force pattern matches a predetermined force pattern. 
 
     
     
       19. The method of  claim 15 , wherein the axis is transverse to a direction of the force applied to the button. 
     
     
       20. The method of  claim 15 , wherein the axis is parallel to a direction of the force applied to the button.

Description:
FIELD 
     The described embodiments generally relate to a button that provides force sensing and/or haptic output. More particularly, the described embodiments relate to a button having a force sensor (or tactile switch) that may trigger operation of a haptic engine of the button, and to alternative embodiments of a haptic engine for a button. The haptic engine may be a permanent magnet biased electromagnetic haptic engine (or a permanent magnet biased normal flux electromagnetic haptic engine). 
     BACKGROUND 
     A device such as a smartphone, tablet computer, or electronic watch may include a button that is usable to provide input to the device. In some cases, the button may be a volume button. In some cases, the button may be context-sensitive, and may be configured to receive different types of input based on an active context (e.g., an active utility or application) running on the device. Such a button may be located along a sidewall of a device, and may move toward the sidewall when a user presses the button. Pressing the button with an applied force that exceeds a threshold may trigger actuation (e.g., a state change) of a mechanical switch disposed behind the button. In some cases, a button may pivot along the sidewall. For example, the top of the button may be pressed and pivot toward the sidewall to increase a sound volume, or the bottom of the button may be pressed and pivot toward the sidewall to decrease the sound volume. 
     SUMMARY 
     Embodiments of the systems, devices, methods, and apparatus described in the present disclosure are directed to a button that provides force sensing and/or haptic output. In some cases, a button may be associated with a force sensor (or tactile switch) that triggers operation of a haptic engine in response to detecting a force (or press) on the button. The haptic engine may be a permanent magnet biased electromagnetic haptic engine (or a permanent magnet biased normal flux electromagnetic haptic engine). 
     In a first aspect, the present disclosure describes a module having a permanent magnet biased electromagnetic haptic engine. The haptic engine may include a stator and a shuttle. A constraint may be coupled to the stator and the shuttle. A force sensor may be at least partially attached to the permanent magnet biased electromagnetic haptic engine, and may be configured to sense a force applied to the module. The constraint may be configured to constrain closure of a gap between the stator and the shuttle and bias the shuttle toward a rest position in which the shuttle is separated from the stator by the gap. 
     In another aspect, the present disclosure describes another module. The module may include a haptic engine, a force sensor, and a constraint. The haptic engine may include a stationary portion and a movable portion. The movable portion may be configured to move linearly, when the haptic engine is stimulated by an electrical signal, to provide a haptic output. The force sensor may be at least partially attached to the haptic engine and configured to sense a force applied to the module. The constraint may be configured to constrain movement of the movable portion relative to the stationary portion and bias the movable portion toward a rest position in which the movable portion is separated from the stationary portion by a gap. 
     In still another aspect of the disclosure, a method of providing a haptic response to a user is described. The method may include constraining relative motion between a stationary portion and a movable portion of a haptic engine, to bias the movable portion toward a rest position in which the movable portion is separated from the stationary portion by a gap, and to constrain closure of the gap. The method may further include determining a force applied to a button using a force sensor, where the button is mechanically coupled to the movable portion; determining the determined force matches a predetermined force; identifying a haptic actuation waveform associated with the predetermined force; and applying the haptic actuation waveform to the haptic engine. The relative motion between the stationary portion and the movable portion may be constrained to translation of the movable portion along an axis. 
     In addition to the aspects and embodiments described above, further aspects and embodiments will become apparent by reference to the drawings and by study of the following description. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The disclosure will be readily understood by the following detailed description in conjunction with the accompanying drawings, wherein like reference numerals designate like structural elements, and in which: 
         FIGS. 1A-1C  show an example of an electronic device; 
         FIGS. 2A &amp; 2B  show partially exploded views of button assemblies in relation to a housing; 
         FIG. 2C  shows a cross-section of an alternative configuration of a button assembly; 
         FIG. 3  shows an exploded view of an example haptic engine; 
         FIGS. 4A-4C  show an assembled cross-section of the haptic engine and button described with reference to  FIG. 3 ; 
         FIGS. 5-8, 9A &amp; 9B  show alternatives to the haptic engine described with reference to  FIGS. 4A-4C ; 
         FIGS. 10A, 10B, 11A, 11B &amp; 12A-12E  show example embodiments of rotors; 
         FIG. 13A  shows a cross-section of the components described with reference to  FIG. 3 , with an alternative force sensor; 
         FIG. 13B  shows an alternative way to wrap a flex circuit around the rotor core (or alternatively the first stator) described with reference to  FIG. 13A ; 
         FIG. 14A  shows another cross-section of the components described with reference to  FIG. 3 , with another alternative force sensor; 
         FIG. 14B  shows an isometric view of a flex circuit used to implement the force sensor described with reference to  FIG. 14A ; 
         FIG. 15  shows an example two-dimensional arrangement of force sensing elements; 
         FIGS. 16A-16C , there are shown alternative configurations of a rotor core; 
         FIGS. 17A-17D  show another example haptic engine; 
         FIG. 18  illustrates an example method of providing a haptic response to a user; and 
         FIG. 19  shows a sample electrical block diagram of an electronic device. 
     
    
    
     The use of cross-hatching or shading in the accompanying figures is generally provided to clarify the boundaries between adjacent elements and also to facilitate legibility of the figures. Accordingly, neither the presence nor the absence of cross-hatching or shading conveys or indicates any preference or requirement for particular materials, material properties, element proportions, element dimensions, commonalities of similarly illustrated elements, or any other characteristic, attribute, or property for any element illustrated in the accompanying figures. 
     Additionally, it should be understood that the proportions and dimensions (either relative or absolute) of the various features and elements (and collections and groupings thereof) and the boundaries, separations, and positional relationships presented therebetween, are provided in the accompanying figures merely to facilitate an understanding of the various embodiments described herein and, accordingly, may not necessarily be presented or illustrated to scale, and are not intended to indicate any preference or requirement for an illustrated embodiment to the exclusion of embodiments described with reference thereto. 
     DETAILED DESCRIPTION 
     Reference will now be made in detail to representative embodiments illustrated in the accompanying drawings. It should be understood that the following description is not intended to limit the embodiments to one preferred embodiment. To the contrary, it is intended to cover alternatives, modifications, and equivalents as can be included within the spirit and scope of the described embodiments as defined by the appended claims. 
     Described herein are techniques that enable a button to provide force sensing and/or haptic output functionality. In some cases, a button may be associated with a force sensor that triggers operation of a haptic engine in response to detecting a force on the button. In other cases, the force sensing and haptic output functions may be decoupled. The haptic engine may be a permanent magnet biased electromagnetic haptic engine (or a permanent magnet biased normal flux electromagnetic haptic engine)—e.g., a haptic engine having a rotor or shuttle that is biased by one or more permanent magnets, and electromagnetically actuated. 
     In some embodiments, the haptic engine and force sensor associated with a button may be combined in a single module. 
     In some embodiments, the force sensor associated with a button may include a plurality of force sensing elements distributed in one, two, or three dimensions. Such force sensing elements may be used to determine both the amount of force applied to the button, as well as a location of the force. In this manner, and by way of example, a button that does not move when pressed may be operated as the functional equivalent of a button that can be pressed in multiple locations, such as a volume button that can be pressed along a top portion or a bottom portion to increase or lower a sound volume. 
     In some embodiments, the force sensor associated with a button may sense a force pattern applied to a button, such as a sequence of longer or shorter presses. The force sensor may also or alternatively be configured to distinguish a button tap from a button press having a longer duration. 
     In some embodiments, the haptic engine associated with a button may be driven using different haptic actuation waveforms, to provide different types of haptic output. The different haptic actuation waveforms may provide different haptic output at the button. In some embodiments, a processor, controller, or other circuit associated with a button, or a circuit in communication with the button, may determine whether a force applied to the button matches a predetermined force, and if so, stimulate the haptic engine using a particular haptic actuation waveform that has been paired with the predetermined force. A haptic engine may also be stimulated using different haptic actuation waveforms based on a device&#39;s context (e.g., based on an active utility or application). 
     In some embodiments, a module providing force sensing and haptic output functionality may be programmed to customize the manner in which force sensing is performed or haptic output is provided. 
     Various of the described embodiments may be operated at low power or provide high engine force density (e.g., a high force with low travel). In an embodiment incorporating the features described with reference to  FIGS. 3, 4A-4C, 10A-10B , &amp;  13 A, a haptic output providing nearly 2 Newtons (N) of force (e.g., 1 N of rotational force on one side of a rotor and 1N of rotational force on the other side of the rotor, providing a net rotational force of 2 N) and a torque of 2.5 N-millimeters (Nmm) has been generated with a haptic engine volume of less than 150 cubic millimeters (mm 3 ) and button travel of ±0.10 mm. Such performance is significantly better than the haptic output of known button alternatives of similar and larger size. 
     The haptic engine embodiments described herein can provide a haptic output force that increases linearly with the current applied to the haptic engine and movement of a rotor or shuttle. 
     These and other embodiments are described with reference to  FIGS. 1A-19 . However, those skilled in the art will readily appreciate that the detailed description given herein with respect to these figures is for explanatory purposes only and should not be construed as limiting. 
     Directional terminology, such as “top”, “bottom”, “upper”, “lower”, “front”, “back”, “over”, “under”, “above”, “below”, “left”, “right”, etc. is used with reference to the orientation of some of the components in some of the figures described below. Because components in various embodiments can be positioned in a number of different orientations, directional terminology is used for purposes of illustration only and is in no way limiting. The directional terminology is intended to be construed broadly, and therefore should not be interpreted to preclude components being oriented in different ways. The use of alternative terminology, such as “or”, is intended to indicate different combinations of the alternative elements. For example, A or B is intended to include, A, or B, or A and B. 
       FIGS. 1A-1C  show an example of an electronic device or simply “device”  100 . The device&#39;s dimensions and form factor, including the ratio of the length of its long sides to the length of its short sides, suggest that the device  100  is a mobile phone (e.g., a smartphone). However, the device&#39;s dimensions and form factor are arbitrarily chosen, and the device  100  could alternatively be any portable electronic device including, for example a mobile phone, tablet computer, portable computer, portable music player, health monitor device, portable terminal, or other portable or mobile device.  FIG. 1A  shows a front isometric view of the device  100 ;  FIG. 1B  shows a rear isometric view of the device  100 ; and  FIG. 1C  shows a cross-section of the device  100 . The device  100  may include a housing  102  that at least partially surrounds a display  104 . The housing  102  may include or support a front cover  106  or a rear cover  108 . The front cover  106  may be positioned over the display  104 , and may provide a window through which the display  104  may be viewed. In some embodiments, the display  104  may be attached to (or abut) the housing  102  and/or the front cover  106 . 
     As shown in  FIGS. 1A &amp; 1B , the device  100  may include various other components. For example, the front of the device  100  may include one or more front-facing cameras  110 , speakers  112 , microphones, or other components  114  (e.g., audio, imaging, or sensing components) that are configured to transmit or receive signals to/from the device  100 . In some cases, a front-facing camera  120 , alone or in combination with other sensors, may be configured to operate as a bio-authentication or facial recognition sensor. The device  100  may also include various input devices, including a mechanical or virtual button  116 , which may be located along the front surface of the device  100 . The device  100  may also include buttons or other input devices positioned along a sidewall of the housing  102  and/or on rear surface of the device  100 . For example, a volume button or multipurpose button  118  may be positioned along the sidewall of the housing  102 , and in some cases may extend through an aperture in the sidewall. By way of example, the rear surface of the device  100  is shown to include a rear-facing camera  120  or other optical sensor (see,  FIG. 1B ). A flash or light source may also be positioned along the rear of the device  100  (e.g., near the camera  120 ). In some cases, the rear surface of the device may include multiple rear-facing cameras. 
     As discussed previously, the device  100  may include a display  104  that is at least partially surrounded by the housing  102 . The display  104  may include one or more display elements including, for example, a light-emitting display (LED), organic light-emitting display (OLED), liquid crystal display (LCD), electroluminescent display (EL), or other type of display element. The display  104  may also include one or more touch and/or force sensors that are configured to detect a touch and/or a force applied to a surface of the cover  106 . The touch sensor may include a capacitive array of nodes or elements that are configured to detect a location of a touch on the surface of the cover  106 . The force sensor may include a capacitive array and/or strain sensor that is configured to detect an amount of force applied to the surface of the cover  106 . 
       FIG. 1C  depicts a cross-section of the device  100  shown in  FIGS. 1A and 1B . As shown in  FIG. 1C , the rear cover  108  may be a discrete or separate component that is attached to the sidewall  122 . In other cases, the rear cover  108  may be integrally formed with part or all of the sidewall  122 . 
     As shown in  FIG. 1C , the sidewall  122  or housing  102  may define an interior volume  124  in which various electronic components of the device  100 , including the display  104 , may be positioned. In this example, the display  104  is at least partially positioned within the internal volume  128  and attached to an inner surface of the cover  106 . A touch sensor, force sensor, or other sensing element may be integrated with the cover  106  and/or the display  104  and may be configured to detect a touch and/or force applied to an outer surface of the cover  106 . In some cases, the touch sensor, force sensor, and/or other sensing element may be positioned between the cover  106  and the display  104 . 
     The touch sensor and/or force sensor may include an array of electrodes that are configured to detect a location and/or force of a touch using a capacitive, resistive, strain-based, or other sensing configuration. The touch sensor may include, for example, a set of capacitive touch sensing elements, a set of resistive touch sensing elements, or a set of ultrasonic touch sensing elements. When a user of the device touches the cover  106 , the touch sensor (or touch sensing system) may detect one or more touches on the cover  106  and determine locations of the touches on the cover  106 . The touches may include, for example, touches by a user&#39;s finger or stylus. A force sensor or force sensing system may include, for example, a set of capacitive force sensing elements, a set of resistive force sensing elements, or one or more pressure transducers. When a user of the device  100  presses on the cover  106  (e.g., applies a force to the cover  106 ), the force sensing system may determine an amount of force applied to the cover  106 . In some embodiments, the force sensor (or force sensing system) may be used alone or in combination with the touch sensor (or touch sensing system) to determine a location of an applied force, or an amount of force associated with each touch in a set of multiple contemporaneous touches. 
       FIG. 1C  further shows the button  118  along the sidewall  122  The button may be accessible to a user of the device  100  and extend outward from the sidewall  122 . In some cases, a portion of the button  118  may be positioned within a recess in the sidewall  122 . Alternatively, the entire button  118  may be positioned within a recess in the sidewall  122 , and the button  118  may be flush with the housing or inset into the housing. 
     The button may extend through the housing and attach to a haptic engine and force sensor. In some embodiments, the haptic engine and force sensor may be combined in a single module  126 . By way of example, the haptic engine may include a permanent magnet biased electromagnetic haptic engine, or a permanent magnet normal flux electromagnetic haptic engine. Also by way of example, the haptic engine may cause the button to pivot back-and-forth in relation to an axis, translate back-in forth parallel to the sidewall  122 , or translate back-and-forth transverse to the sidewall  122 . The force sensor may include, for example, a capacitive force sensor, a resistive force sensor, an ultrasonic force sensor, or a pressure sensor. 
       FIG. 2A  shows a partially exploded view of a button assembly  200  in relation to a housing (e.g., the sidewall  202 ). The button assembly  200  may include a button  204  and a button base  206 . The button base  206  may be mechanically coupled to an interior of the housing. For example, the button base  206  may be mounted to an interior of the sidewall  202 , which may be an example of the sidewall  122  described with reference to  FIGS. 1A-1C . The button base  206  may be mechanically coupled to the sidewall  202  by one or more screws  208  that extend through one or more holes  210  in the button base  206 . Each screw  208  may be threaded into a hole  212  along an interior surface of the sidewall  202  such that a screw head of the screw  208  bears against a surface of the button base  206  opposite the sidewall  202  and holds the button base  206  against the sidewall  202 . The button base  206  may also or alternatively be mechanically coupled to the interior surface of the sidewall  202  by other means, such as by an adhesive or welds. In some embodiments, an o-ring, leap seal, diaphragm seal, or other type of seal may be positioned or formed between each leg  216  of the button  204  and the sidewall  202 . Alternatively or additionally, a gasket or seal may be positioned or formed between the button base  206  and sidewall  202 . The gasket or seal may prevent moisture, dirt, or other contaminants from entering a device through a button base-to-sidewall interface. In some cases, the sidewall  202  may have a recess  214  in which part or all of the button  204  may reside, or over which part or all of the button  204  may be positioned. In other cases, the sidewall  202  need not have such a recess  214 . 
     The button base  206  may include a haptic engine and a force sensor (e.g., a capacitive force sensor or strain sensor). The haptic engine may include a stationary portion (e.g., a stator) and a movable portion (e.g., a rotor or shuttle). In some cases, the haptic engine may include multiple stationary portions (e.g., a first stator and a second stator, a button base housing, and so on) or multiple movable portions. One or more components of the haptic engine (e.g., one or more of the stationary portion(s) and/or movable portion(s)) may be stimulated to provide a haptic output to the button  204 . For example, an electrical signal (e.g., an alternating current) may be applied to a coil (i.e., a conductive coil) wound around a stationary or movable portion of the haptic engine, thereby selectively increasing the flux of a magnetic field produced by one or more permanent magnets that bias the haptic engine, and periodically reversing the direction of the flux to cause the movable portion(s) to move with respect to the stationary portion(s) and provide a haptic output as the movable portion(s) move back-and-forth. The flux is “selectively” increased in that it is increased on some faces of a rotor or shuttle and decreased on opposing faces, resulting in an increased net rotational force that provides or increases a torque about an axis of a rotor, or an increased net translational force that provides or increases a force along an axis of a shuttle. In cases where the movable portion includes a rotor, the movable portion may be configured to move non-linearly (e.g., pivot) when the haptic engine is stimulated to provide a haptic output. In cases where the movable portion includes a shuttle, the movable portion may be configured to move linearly (e.g., translate) when the haptic engine is stimulated to provide a haptic output. In some cases, the button base  206  may include a constraint, which constraint may be configured to constrain movement of the movable portion(s) relative to the stationary portion(s) (e.g., constrain closure of a gap between a movable portion and a stationary portion), bias the movable portion toward a rest position in which the movable portion is separated from the stationary portion by a gap, and/or guide or constrain motion to motion along a desired path. 
     The button  204  may have a first major surface and a second major surface. The first major surface may be a user interaction surface that faces away from the sidewall  202 , and the second major surface may be a device-facing surface that faces toward the sidewall  202 . One or more legs  216  may extend perpendicularly from the second major surface. By way of example, two legs  216  are shown in  FIG. 2A . The legs  216  may be aligned with and inserted through respective holes  218 ,  220  in the sidewall  202  and button base  206 , and may be mechanically coupled to the movable portion of the haptic engine. In some cases, the leg(s)  216  may be mechanically coupled to the movable portion by one or more screws  222  that extend through one or more holes in the movable portion. Each screw  222  may be threaded into a hole in a respective leg  216  of the button  204  such that a screw head of the screw  222  bears against a surface of the movable portion opposite the leg  216  and mechanically couples the button  204  to the movable portion. 
     The force sensor may include components attached to one or more components of the haptic engine, or more generally, to the button base  206 . In some embodiments, different components of the force sensor may be attached to the movable portion or stationary portion of the haptic engine, and may be separated by a capacitive gap. A force applied to the button (e.g., a user&#39;s press) may cause the movable portion to move toward or away from the stationary portion, thereby changing the width of the capacitive gap and enabling the applied force (or an amount or location of the applied force) to be detected. In some embodiments, the force sensor may include one or more strain sensors disposed on the button base  206  or button  204 . In these latter embodiments, flex of the button base  206  (e.g., the housing of, or a mount for, the button base  206 ), one or more components within the button base  206  (e.g., a stator, rotor, shuttle, or other component capable of flexing), or the button  204 , in response to a force applied to the button  204 , may cause a change in the output of a strain sensor (e.g., a strain gauge), which output enable the applied force (or an amount or location of the applied force) to be detected. 
     As shown in phantom in  FIG. 2A , the configuration of the button base  206  may enable it to be used with different sizes, shapes, or styles of buttons (e.g., button  204  or button  224 ). In alternative embodiments, and as shown in  FIG. 2B , a button  226  may be permanently or semi-permanently attached to a button base  228  (e.g., by one or more welds). In these embodiments, a sidewall  230  of a housing may include an opening  232  through which the button  226  may be inserted before the button base  228  is mechanically coupled to the sidewall  230  (e.g., using one or more screws  222 ). 
       FIG. 2C  shows a cross-section of an alternative configuration of a button assembly  234 . The cross-section shows portions of a device sidewall  236 , with a button  238  extending through an opening in the sidewall  236 . A button base  240  may be attached to an interior of the sidewall  236  by an adhesive, welds, or other attachment mechanism  242 , and the button  238  may be removably or semi-permanently attached to the button base  240 , as described with reference to  FIG. 2A or 2B  for example. In the embodiment shown in  FIG. 2C , the button base  240  (and in some cases a stator portion of the button base  240 ) may form a portion of the sidewall  236  that faces the button  238  (e.g., a portion of the sidewall  236  below the button  238 ). An o-ring or other type of seal  244  may surround each leg of the button  238  to prevent moisture and debris from entering the button base  240  or interfering with other components interior to the sidewall  236 . 
       FIG. 3  shows an exploded view of an example haptic engine  300 . The haptic engine  300  is an example of the haptic engine included in the button base  206  described with reference to  FIGS. 2A &amp; 2B , and in some cases may be a permanent magnet biased electromagnetic haptic engine (or a permanent magnet biased normal flux electromagnetic haptic engine). 
     The haptic engine  300  may include one or more stationary portions and one or more movable portions, in addition to a constraint  314  that is configured to constrain movement of the movable portion(s) relative to the stationary portion(s) and bias the movable portion(s) toward a rest position in which the movable portion(s) are separated from the stationary portion(s) by one or more gaps. By way of example, the stationary portion(s) may include a pair of ferritic stators (e.g., a first stator  302  and a second stator  304 ), and the movable portion(s) may include a rotor  306  that is positioned between the first and second stators  302 ,  304 . In some embodiments, the first and second stators  302 ,  304  may be held in a spaced apart position by one or more brackets  338 ,  340  that may be welded or clipped to the stators  302 ,  304 . When the components of the haptic engine  300  are assembled, the rotor  306  may be separated from the first stator  302  by a first gap  308  (e.g., a first rotor-to-stator gap), and from the second stator  304  by a second gap  310  (e.g., a second rotor-to-stator gap). The rotor  306  may be configured to move non-linearly (e.g., pivot about a longitudinal axis  312  parallel to each of the first and second stators  302 ,  304 , the rotor  306 , and a sidewall to which a button base including the haptic engine  300  is mounted). The constraint  314  may constrain closure of the first and second gaps  308 ,  310  and bias the rotor  306  toward a rest position in which the rotor  306  is separated from the first and second stators  302 ,  304  by the first and second gaps  308 ,  310 . The rotor  306  may have a height that would allow it to pivot about the longitudinal axis  312  and contact (e.g., crash against) the first stator  302  and/or the second stator  304  in the absence of the constraint  314 . 
     A button  316  may be mechanically coupled to the haptic engine  300 . For example, a button  316  may be mechanically coupled to the rotor  306 , such that movement of the rotor  306  may provide a haptic output to the button  316 . In some cases, the button  316  may be attached to the rotor  306  by screws  318  that pass through holes  320 ,  322 ,  324  in the second stator  304 , the rotor  306 , and the first stator  302 . The screws  318  may be received by threaded inserts in the legs  326  of the button  316 , and heads of the screws  318  may bear against a surface of the rotor  306 . 
     In some embodiments, the constraint  314  may include a flexure  314   a  that has rotor attachment portions  328   a ,  328   b  on either side of a stator attachment portion  330 . The stator attachment portion  330  may be attached to the first stator  302 , and the rotor attachment portions  328   a ,  328   b  (e.g., one or more arms or extensions extending from the stator attachment portion  330 ) may be attached to the rotor  306 . In some embodiments, the stator attachment portion  330  may be attached to the first stator  302  along an axis  332  of the flexure  314   a . The flexure  314   a  may constrain movement of the rotor  306  to movement about a pivot axis (e.g., the longitudinal axis  312 ), and may provide a linearly consistent stiffness opposing the pivot movement. In some cases, the flexure  314   a  may be a metal flexure that is welded or clamped to the first stator  302  (e.g., clamped to the first stator  302  by a clamp  334  that is welded to the first stator  302 ; in  FIG. 3 , the clamp  334  is shown to include two strips aligned with the axis  332  of the flexure  314   a ). In some cases, the rotor attachment portions  328   a ,  328   b  may be welded to the sides of a rotor core, or otherwise clipped or fastened to a rotor core, such that movement of the rotor  306  imparts forces to the arms  328   a ,  328   b  of the flexure  314   a , and the flexure  314   a  in turn imparts forces to the rotor core to constrain movement of the rotor  306 . The forces imparted by the flexure  314   a  may be stronger than forces imparted by the rotor  306  when the haptic engine  300  is not being stimulated by an electrical signal to produce haptic output at the button  316 , but weaker than the forces imparted by the rotor  306  when the haptic engine  300  is stimulated by an electrical signal to produce haptic output. In this manner, the flexure  314   a  may bias the rotor  306  toward a rest position in which the rotor  306  is separated from the stators  302 ,  304  by rotor-to-stator gaps, but stimulation of the haptic engine  300  by an electrical signal may overcome the forces imparted to the rotor  306  by the flexure  314   a , at least to a degree, and cause the rotor  306  to pivot back-and-forth between the stators  302 ,  304 . 
     As another example, the constraint  314  may alternatively or additionally provided by a set of one or more elastomers (e.g., one or more elastomeric pads, such as silicone pads) or other compliant material(s)  314   b . The compliant material(s)  314   b  may be disposed (positioned) between the first stator  302  and the rotor  306  in the first gap  308 , and/or between the second stator  304  and the rotor  306  in the second gap  310 . The compliant material(s)  314   b  may constrain movement of the rotor  306  to movement about a pivot axis (e.g., the longitudinal axis  312 ). The compliant material(s)  314   b  may also damp movement of the rotor  306 . In some cases, the compliant material(s)  314   b  may be adhesively bonded to the rotor  306  and one or more of the stators  302 ,  304 . Similarly to the flexure  314   a , the forces imparted by the compliant material(s)  314   b  may be stronger than forces imparted by the rotor  306  when the haptic engine  300  is not being stimulated by an electrical signal to produce haptic output at the button  316 , but weaker than the forces imparted by the rotor  306  when the haptic engine  300  is stimulated by an electrical signal to produce haptic output. In this manner, the compliant material(s)  314   b  may bias the rotor  306  toward a rest position in which the rotor  306  is separated from the stators  302 ,  304  by rotor-to-stator gaps, but stimulation of the haptic engine  300  by an electrical signal may overcome the forces imparted to the rotor  306  by the compliant material(s)  314   b , at least to a degree, and cause the rotor  306  to pivot back-and-forth between the stators  302 ,  304 . 
     The compliant material(s)  314   b  may be aligned with an axis of the button  316 , as shown in  FIG. 3 , or distributed along an axis, plane, or planes that are transverse to a user interaction surface of the button  316  (e.g., in a one, two, or three-dimensional array). 
     In some alternative embodiments, the haptic engine  300  shown in  FIG. 3  may include only one stator (e.g., the first stator  302 ), and the rotor  306  may move with respect to the one stator. 
     As also shown in  FIG. 3 , a force sensor  336  may be at least partially attached to the haptic engine  300 . The force sensor  336  may be configured to sense a force applied to the haptic engine  300  or a module including the haptic engine  300 . For example, the force sensor  336  may be configured to sense a force applied to the rotor  306  when a user presses the button  316 . In some embodiments, the force sensor  336  may include one or more strain sensors  336   a  attached to the first stator  302  or the second stator  304 . When a user applies a force to the button  316  (e.g., presses the button  316 ), the strain sensor(s)  336   a  may flex. Outputs of the strain sensor(s)  336   a  may change in a manner that is related to the amount or location of the force applied to the button  316 . In alternative embodiments, the strain sensors  336   a  may be positioned elsewhere on the haptic engine  300 , or on a housing of the haptic engine  300  (e.g., on the button base described with reference to  FIG. 2A or 2B ). In further alternative embodiments, the force sensor  336  may additionally or alternatively include a capacitive force sensor or other type of force sensor. 
     Turning now to  FIGS. 4A-4C , there is shown an assembled cross-section of the haptic engine  300  and button  316  described with reference to  FIG. 3 . As shown, the arms  328   a ,  328   b  that extend from the flexure  314   a  may extend around upper and lower surfaces of the first stator  302 , and may be attached to the upper and lower surfaces of the rotor  306  (e.g., to upper and lower surfaces or sides of a rotor core). 
       FIG. 4A  shows the haptic engine  300  at rest.  FIGS. 4B &amp; 4C  show the haptic engine  300  after it has been stimulated to provide a haptic output. More specifically,  FIG. 4B  shows the haptic engine  300  after the rotor  306  has pivoted clockwise to a maximum extent, and  FIG. 4C  shows the haptic engine  300  after the rotor  306  has pivoted counter-clockwise to a maximum extent. While the haptic engine  300  is being stimulated, the rotor  306  may pivot back-and-forth between the states shown in  FIGS. 4B &amp; 4C  to provide haptic output to the button  316 . Stimulation of the haptic engine  300  causes the rotor  306  to move non-linearly (e.g., pivot) with enough force to overcome the spring force of the flexure  314   a  and the shear force of the compliant material(s)  314   b . After stimulation of the haptic engine  300  ceases, the spring force of the flexure  314   a  and/or the shear force(s) of the compliant material(s)  314   b  may be sufficient to restore the rotor  306  to the rest position shown in  FIG. 4A . 
     Each of the flexure  314   a  and/or compliant material(s)  314   b  may be configured to provide a first stiffness opposing the non-linear movement of the rotor  306 , and a second stiffness opposing a force applied to the button  316  (i.e., asymmetric first and second stiffnesses). This can enable the stiffnesses to be individually adjusted (e.g., to separately tune the force input and haptic output user experiences for the button  316 ). 
       FIG. 5  shows an alternative haptic engine  500  that is similar to the haptic engine  300  described with reference to  FIGS. 4A-4C . The alternative haptic engine  500  lacks the compliant material(s)  314   b  and instead relies on the flexure  314   a  to constrain motion of the rotor  306 . 
       FIG. 6  shows another alternative haptic engine  600  that is similar to the haptic engine  300  described with reference to  FIGS. 4A-4C . The alternative haptic engine  600  shown in  FIG. 6  lacks the flexure  314   a  and relies instead on the compliant material(s)  314   b  to constrain motion of the rotor  306 . 
       FIG. 7  shows yet another alternative haptic engine  700  that is similar to the haptic engine  300  described with reference to  FIGS. 4A-4C . The alternative haptic engine  700  shown in  FIG. 7  distributes the compliant material(s)  314   b  differently than what is shown in  FIGS. 4A-4C . In particular, the compliant material(s)  314   b  may be positioned in a two or three-dimensional array, within the gaps  308 ,  310  between the stators  302 ,  304  and rotor  306 . 
       FIG. 8  shows a haptic engine  800  similar to that described with reference to  FIGS. 4A-4C , but with the flexure  314   a  attached to the second stator  304  instead of the first stator  302 . By attaching the flexure  314   a  to the haptic engine (e.g., to the second stator  304 ) along an axis disposed on a side of the rotor  306  opposite the button  316 , instead of along an axis disposed on a same side of the rotor  306  as the button  316  (as shown in  FIGS. 4A-4C ), the moment arm of the rotor  306  with respect to the button  316  may be changed, and the haptic output provided to the button  316  may be changed. 
       FIGS. 9A &amp; 9B  show a haptic engine  900  similar to that shown in  FIGS. 4A-4C , but with the stator and rotor components swapped so that a stator  902  is positioned between portions  904   a ,  904   b  of a rotor  904 .  FIG. 9A  shows the haptic engine  900  at rest, and  FIG. 9B  shows the haptic engine  900  with the rotor  904  in a left-most (or counter-clockwise) state. The embodiment shown in  FIGS. 9A &amp; 9B  allows the button  906  to be attached to an outer component of the haptic engine  900  (e.g., to the rotor portion  904   b ). A flexure  314   a  or other constraint may be attached to the rotor  904  and stator  902  similarly to how a flexure  314  is attached to the stators  302 ,  304  and rotor  306  described with reference to  FIGS. 4A-4C . 
     Referring now to  FIGS. 10A &amp; 10B , there is shown an example embodiment of the rotor described with reference to  FIGS. 3, 4A-4C, 5-8 , &amp;  9 A- 9 B. 
       FIGS. 10A-12E  illustrate various examples of a permanent magnet biased electromagnetic haptic engine (or permanent magnet biased normal flux electromagnetic haptic engine). In some embodiments, one of the haptic engines described with reference to  FIGS. 10A-12E  may be used as the haptic engine described with reference to  FIGS. 1A-9B . 
       FIGS. 10A &amp; 10B  show a haptic engine  1000  having a rotor  1002  positioned between first and second stators  1004 ,  1006 . The stators  1004 ,  1006  may take the form of ferritic plates. The rotor  1002  may have an H-shaped core  1008  having two side plates connected by an intermediate plate that joins the two side plates. The different plates of the core  1008  may be attached (e.g., welded) to one another, or integrally formed as a monolithic component. 
     A first coil  1010  may be wound around the core  1008  (e.g., around the intermediate plate) near one side plate of the core  1008 , and a second coil  1012  may be wound around the core  1008  (e.g., around the intermediate plate) near the other side plate of the core  1008 . The first and second coils  1010 ,  1012  may be electrically connected in series or in parallel. A parallel connection of the coils  1010 ,  1012  may provide a reduction in the total resistance of the coils  1010 ,  1012 , and/or may enable the use of a thinner wire to achieve the same resistance as a series connection of the coils  1010 ,  1012 . A first permanent magnet  1014  may be attached to a first surface of the core  1008  (e.g., to a first surface of the intermediate plate), and a second permanent magnet  1016  may be attached to a second surface of the core  1008  (e.g., to a second surface of the intermediate plate, opposite the first surface of the intermediate plate). The first and second permanent magnets  1014 ,  1016  may be oriented with their north poles facing the same direction (e.g., to the right in  FIG. 10B ). 
     As shown in  FIG. 10B , the permanent magnets  1014 ,  1016  may form a magnetic bias field indicated by flux  1018 . The magnetic bias field may be differentially changed by flux  1020  when the haptic engine  1000  is stimulated by applying an electrical signal (e.g., a current) to the coils  1010 ,  1012 . For example, the flux  1018  and  1020  may add at a first pair of opposite corners of the haptic engine  1000 , and subtract at a second pair of opposite corners of the haptic engine  1000 , thereby causing the rotor  1002  to pivot. The rotor  1002  may be caused to pivot in an opposite direction by reversing the current in the coils, or by removing the current and letting the momentum of the restorative force provided by a constraint (e.g., constraint  314   a  or  314   b , not shown) to cause the rotor  306  to pivot in the opposite direction. Note that, in the absence of a constraint (e.g., the constraint  314   a  or  314   b ), the rotor  306  would pivot in the absence of an electrical signal applied to the coils  1010 ,  1012  and crash against the first and second stators  1004 ,  1006 . 
       FIGS. 11A &amp; 11B  show a haptic engine  1100  that is similar to the haptic engine  1000  described with reference to  FIGS. 10A &amp; 10B , but without the second stator  1006 . 
       FIG. 12A  shows a haptic engine  1200  that is similar to the haptic engine  1100 , but with the coils  1010 ,  1012  wound around perpendicular extensions  1202 ,  1204  from a core  1206 , such that the coils  1010 ,  1012  are planar to one another. A single permanent magnet  1208  may be attached to a surface of the core  1206 , between the coils  1010 ,  1012 . 
       FIG. 12B  shows a haptic engine  1210  that is similar to the haptic engine  1200  described with reference to  FIG. 12A , but with a singular coil  1212  wound around an extension of the core  1214 , and permanent magnets  1216 ,  1218  attached to the core  1214  on opposite sides of the coil  1212 . The haptic engine  1210  includes a single stator  1220 . 
       FIG. 12C  shows a haptic engine  1230  having a rotor  1232  positioned between first and second stators  1234 ,  1236 . The rotor  1232  includes an H-shaped core  1238  in which the H-profile of the core  1238  extends planar to the first and second stators  1234 ,  1236 . A coil  1240  is wound around the middle portion of the H-profile, and permanent magnets  1242  and  1244  are attached to the H-shaped core  1238  within upper and lower voids of the H-shaped profile. 
       FIG. 12D  shows a haptic engine  1250  having a rotor  1252  positioned adjacent a pair of planar stators  1254 ,  1256 . The rotor  1252  may be configured similarly to the rotor shown in  FIG. 12B , but in some cases may have a larger coil  1258  that extends between stators  1254 ,  1256 . 
       FIG. 12E  shows a haptic engine  1260  that is similar to the haptic engine  1250  described with reference to  FIG. 12D , but with a second pair of planar stators  1262 ,  1264  positioned on a side of the rotor  1252  opposite the first pair of planar stators  1254 ,  1256 . The coil  1258  may also extend between the stators  1262  and  1264 . 
     In alternative embodiments of the haptic engines described with reference to  FIGS. 10A-12E , the core of a rotor may be less H-shaped or non-H-shaped, and one or more stators may be C-shaped and extend at least partially around the rotor. In some embodiments, only a single coil and a single permanent magnet may be included on a rotor. Alternatively, one or more coils or permanent magnets may be positioned on a stator, instead of or in addition to one or more coils or permanent magnets positioned on a rotor. 
       FIG. 13A  shows a cross-section of the components described with reference to  FIG. 3 , but for the constraint (which may be included in a module including the components shown in  FIG. 13A , but which is not shown in  FIG. 13A ). The components include the haptic engine  300  (e.g., the rotor  306  positioned between first and second stators  302 ,  304 ). In some embodiments, the haptic engine  300  may be further configured as described with reference to any of  FIGS. 3-12E . In contrast to the force sensor  336  shown in  FIG. 3 , the components shown in  FIG. 13A  include a capacitive force sensor  1302  that is at least partially attached to the haptic engine  300 .  FIG. 13A  also shows the button  316  described with reference to  FIG. 3 , with its legs  326  inserted through a housing  1320  (e.g., a sidewall of a device) and attached to the rotor  306  by screws  318 . The capacitive force sensor  1302  may be configured to sense a force applied to the button  316 , and thereby to the rotor  306 , in response to user or other interaction with the button  316  (e.g., the capacitive force sensor  1302  may sense a force that is applied to the button  316  parallel to a rotor-to-stator gap, or a force applied to the button  316  which has a force component parallel to the rotor-to-stator gap). 
     By way of example, the capacitive force sensor  1302  is shown to include two force sensing elements  1302   a , each of which may be similarly configured. The two force sensing elements  1302   a  may be positioned at different locations relative to a user interaction surface of the button  316 . As shown, the two force sensing elements  1302   a  may be spaced apart along the housing  1320 , at opposite ends of the haptic engine  300 . In alternative embodiments, the capacitive force sensor  1302  may include more force sensing elements (e.g., 3-4 force sensing elements, or 3-8 force sensing elements) or fewer force sensing elements (e.g., one force sensing element). In the case of three or more force sensing elements, the force sensing elements may be positioned in a one-dimensional array or two-dimensional array with respect to the user interaction surface of the button  316 . 
     Each force sensing element  1302   a  may include a set of electrodes  1304 ,  1306 , and each set of electrodes may include a first electrode  1304  attached to the rotor  306 , and a second electrode  1306  attached to one of the stators (e.g., the first stator  302 ) and separated from the first electrode  1304  by a capacitive gap  1308 . In some embodiments, the first electrode  1304  may be attached to an extension  1310  of the rotor&#39;s core, on a side of the core that faces the first stator  302 ; and the second electrode  1306  may be attached to an extension  1312  of the first stator  302 , on a side of the first stator  302  that faces the rotor  306 . 
     In some cases, the first electrode  1304  may be attached to or included in a first flex circuit  1314  (or printed circuit board) attached to the core, and the second electrode  1306  may be attached to or included in a second flex circuit  1316  (or printed circuit board) attached to the first stator  302 . By way of example, the first flex circuit  1314  may carry power, ground, or other electrical signals to the first electrode  1304 , as well as to the rotor  306 . For example, the first flex circuit  1314  may carry an electrical signal (e.g., power) to a coil (or coils) attached to the rotor  306 , to stimulate the haptic engine  300  to provide a haptic output. Also by way of example, the second flex circuit  1316  may carry power, ground, or other electrical signals to the second electrode  1306 , as well as to a controller, processor, or other circuit  1318  coupled to the second flex circuit  1316 . Alternatively, the circuit  1318  may be coupled to the first flex circuit  1314 , or to both flex circuits  1314 ,  1316 . The second flex circuit  1316  may also carry electrical signals away from the second electrode  1306  or circuit  1318 , or couple the second electrode  1306  to the circuit  1318 . The first and second flex circuits  1314 ,  1316  may electrically isolate the first and second electrodes  1304 ,  1306  from the core and first stator  302 . 
     The first flex circuit  1314  may be adhesively bonded, clipped, or otherwise attached to the rotor core. The second flex circuit  1316  may be adhesively bonded, clipped, or otherwise attached to the first stator  302 . 
     In some embodiments, the circuit  1318  may be used to detect or measure a capacitance of the second electrode  1306  of each force sensing element  1302   a , and provide an indication of whether a force applied to the button  316  is detected. In some cases, the first electrode  1304  may be driven with an electrical signal as the capacitance of the second electrode  1306  is measured. The circuit  1318  may also or alternatively indicate a value of a capacitance of the second electrode  1306 , which value may be routed to an off-module controller, processor, or other circuit via the second flex circuit  1316 . In some embodiments, the circuit  1318  or an off-module circuit may use the different outputs of different force sensing elements (e.g., outputs of the two force sensing elements  1302   a  shown in  FIG. 13A ) to determine an amount of force applied to the button  316  or a location of a force applied to the button  316  (i.e., a force location). For example, measurements provided by different force sensing elements may be averaged or otherwise combined to determine an amount of force; or measurements provided by different force sensing elements, in combination with the locations of the force sensing elements with respect to a surface of the button, can be used to determine a force location. In some embodiments, the circuit  1318  may provide a pattern of capacitances to the off-module circuit. The pattern of capacitances may indicate a type of force input to the button  316  (e.g., a particular command or input). The pattern of capacitances (or force pattern) provided by the circuit  1318  may be timing insensitive, or may include a pattern of capacitances sensed within a particular time period, or may include a pattern of capacitances and an indication of times between the capacitances. 
     The signals carried by the first or second flex circuit  1314 ,  1316  may include analog and/or digital signals (e.g., analog or digital indications of the presence, amount, or location of a force may be provided via analog and/or digital signals). 
     In some embodiments, the first and second flex circuits  1314 ,  1316  may be electrically coupled, and the circuit  1318  may provide an electrical signal to the haptic engine  300 , to stimulate the haptic engine  300  to provide a haptic output, in response to detecting the presence of a force on the button  316  (or in response to determining that a particular amount of force, location of force, or pattern of force has been applied to the button  316 ). The circuit  1318  may provide a single type of electrical signal or haptic actuation waveform to the haptic engine  300  in response to determining that a force, or a particular type of force, has been applied to the button  316 . Alternatively, the circuit  1318  may identify a haptic actuation waveform associated with a particular type of force applied to the button  316 , and apply the identified haptic actuation waveform to the haptic engine  300  (e.g., to produce different types of haptic output in response to determining that different types of force have been applied to the button  316 ). In some embodiments, different haptic actuation waveforms may have different amplitudes, different frequencies, and/or different patterns. 
       FIG. 13A  shows an example arrangement of flex circuits  1314 ,  1316  in which the first flex circuit  1314  wraps around each of opposite ends of the rotor core, and the second flex circuit  1316  wraps around each of opposite ends of the first stator  302 . The portions of the first flex circuit  1314  shown at the left and right of  FIG. 13A  may be connected by another portion of the first flex circuit  1314  that extends between the two end portions. In some cases, the portion of the first flex circuit  1314  that connects the two end portions may be bent or folded to extend perpendicularly to the two end portions (and in some cases, the folded portion may connected to an off-module circuit). The portions of the second flex circuit  1316  shown in  FIG. 13A  may be connected similarly to how the portions of the first flex circuit  1314  are connected, and may also be connected to an off-module circuit. 
       FIG. 13B  shows an alternative way to wrap a flex circuit around the rotor core  1358  (or alternatively the first stator  302 ) described with reference to  FIG. 13A . As shown, the flex circuit  1350  may include a central portion  1352  that connects pairs of tab portions  1354 ,  1356  at opposite ends of the central portion  1352 . One pair of tab portions  1354  extends perpendicularly from the central portion  1352 , over first and second opposite faces of the rotor core  1358 , near one end of the rotor core  1358 . Another pair of tab portions  1356  extends perpendicularly from the central portion  1352 , over the first and second opposite faces of the rotor core  1358 , near an opposite end of the rotor core  1358 . The flex circuit  1350  may be adhesively bonded, clipped, or otherwise attached to the rotor core  1358 . 
     In alternative flex circuit arrangements, a flex circuit may be attached to the rotor or stator without wrapping the flex circuit around the rotor or stator. However, wrapping a flex circuit around a rotor core may provide a flex circuit surface for coil lead connections, if needed, or may increase the flex service loop length and flexibility, if needed. In some embodiments, the rotor and stator flex circuits may be coupled by a hot bar or other element. 
       FIG. 14A  shows another cross-section of the components described with reference to  FIG. 3 , but for the constraint (which may be included in a module including the components shown in  FIG. 14A , but which is not shown in  FIG. 14A ). The components include a haptic engine (e.g., a rotor positioned between first and second stators). The components include the haptic engine  300  (e.g., the rotor  306  positioned between first and second stators  302 ,  304 ). In some embodiments, the haptic engine  300  may be further configured as described with reference to any of  FIGS. 3-12E . The components shown in  FIG. 14A  also include a capacitive force sensor  1402  that is at least partially attached to the haptic engine  300 .  FIG. 14A  also shows the button  316  described with reference to  FIG. 3 , with its legs  326  inserted through a housing  1418  (e.g., a sidewall of a device) and attached to the rotor  306  by screws  318 . The capacitive force sensor  1402  may be configured to sense a force applied to the button  316 , and thereby to the rotor  306 , in response to user or other interaction with the button  316  (e.g., the capacitive force sensor  1402  may sense a force that is applied to the button  316  parallel to a rotor-to-stator gap, or a force applied to the button  316  which has a force component parallel to the rotor-to-stator gap). 
     By way of example, the capacitive force sensor  1402  is shown to include two force sensing elements  1402   a , each of which may be similarly configured. The two force sensing elements  1402   a  may be positioned at different locations relative to a user interaction surface of the button  316 . As shown, the two force sensing elements  1402   a  may be spaced apart along the housing  1418 , at opposite ends of the haptic engine  300 . In alternative embodiments, the capacitive force sensor  1402  may include more force sensing elements (e.g., 3-4 force sensing elements, or 3-8 force sensing elements) or fewer force sensing elements (e.g., one force sensing element). In the case of three or more force sensing elements, the force sensing elements may be positioned in a one-dimensional array or two-dimensional array with respect to the user interaction surface of the button  316 . 
     Each force sensing element  1402   a  may include a set of electrodes  1404 ,  1406 , and each set of electrodes may include a first electrode  1404  attached to the rotor  306 , and a second electrode  1406  attached to one of the stators (e.g., the first stator  302 ) and separated from the first electrode  1404  by a capacitive gap  1408 . In some embodiments, the first electrode  1404  may be attached to a flex circuit  1410  or clip connected (e.g., adhesively bonded or clipped) to the rotor&#39;s core, and the second electrode  1406  may be attached to the first stator  302 , on a side of the first stator  302  that faces the rotor  306 . 
     In some cases, the flex circuit  1410  or clip to which the first electrode  1404  is attached may include a central portion  1412  that faces the button  316 , and arms  1414  that extend perpendicularly from the central portion  1412  and are attached to the rotor  306  (e.g., to its core), as shown in  FIGS. 14A &amp; 14B . The second electrode  1406  may be attached to or included in a second flex circuit  1416  (or printed circuit board) attached to the first stator  302 . By way of example, the flex circuits  1410 ,  1416  may carry power, ground, or other electrical signals similarly to the first and second flex circuits  1314 ,  1316  described with reference to  FIG. 13A . 
     In some embodiments, a circuit may be electrically coupled to one or both of the flex circuits  1410 ,  1416  and used to detect or measure a capacitance of the second electrode  1406  of each of the force sensing elements, and provide an indication of whether a force applied to the button  316  is detected. The circuit may also or alternatively indicate a value of a capacitance of the second electrode  1406 , which value may be routed to an off-module controller, processor, or other circuit via the second flex circuit  1416 . In some embodiments, the circuit or an off-module circuit may use the different outputs of different force sensing elements (e.g., outputs of the two force sensing elements  1402   a  shown in  FIG. 14A ) to determine an amount of force applied to the button  316  or a location of a force applied to the button  316  (i.e., a force location). In some embodiments, the circuit may provide a pattern of capacitances to the off-module circuit. The pattern of capacitances may indicate a type of force input to the button  316  (e.g., a particular command or input). The pattern of capacitances (or force pattern) provided by the circuit may be timing insensitive, or include a pattern of capacitances sensed within a particular time period, or include a pattern of capacitances and an indication of times between the capacitances. 
     The signals carried by the flex circuits  1410 ,  1416  may include analog and/or digital signals (e.g., analog or digital indications of the presence, amount, or location of a force may be provided via analog and/or digital signals). 
     In some embodiments, the flex circuits  1410 ,  1416  may be electrically coupled, and a circuit coupled to the flex circuits  1410 ,  1416  may provide an electrical signal to the haptic engine  300 , to stimulate the haptic engine to provide a haptic output, in response to detecting the presence of a force on the button  316  (or in response to determining that a particular amount of force, location of force, or pattern of force has been applied to the button  316 ). The circuit may provide one or more haptic actuation waveforms as described with reference to  FIG. 13A . 
     A capacitive force sensor may additionally or alternatively include other types of force sensing elements in which a first electrode of the force sensing element is attached to a movable portion of a module, and a second electrode of the force sensing element is attached to a stationary portion of the module and separated from the first electrode by a capacitive gap. The force sensing elements may be positioned within or outside a stator-to-rotor gap. 
       FIG. 15  shows an example two-dimensional arrangement of force sensing elements  1500 , which force sensing elements  1500  may be incorporated into the force sensor described with reference to  FIG. 13A or 14A , or into other force sensors. The example arrangement shown in  FIG. 15  includes four force sensing elements  1500  disposed near the corners of a haptic engine (or near the corners of a button&#39;s user interaction surface). The force sensing elements  1500  may alternatively be distributed uniformly across a surface or volume  1502 . A two-dimensional array of force sensing elements  1500  can be used to determine what portion of a button is pressed, or to sense the components of a force applied in different directions (e.g., a side-to-side movement as might be provided to a ringer on/off switch). A one-dimensional array of force sensing elements  1500  can also be used to determine what portion of a button is pressed, but only along one button axis. In some embodiments, only three of the force sensing elements  1500  may be provided, or the force sensing elements  1500  may be disposed in different positions. 
     Turning now to  FIGS. 16A-16C , there are shown alternative configurations of a rotor core. As shown in  FIG. 16A , a rotor core  1600  may include a first rigid plate  1602  and a second rigid plate  1604  having opposing surfaces joined by a third rigid plate  1606  to form an H-shaped core  1600 . In some embodiments, a first pair of plates  1608 ,  1610  may be stacked and welded to form the first rigid plate  1602 , and a second pair of plates may be stacked and welded to form the second rigid plate  1604 . In some embodiments, a third pair of plates may be stacked and welded to form the third rigid plate  1606  (not shown). 
       FIG. 16B  shows an alternative rotor core  1620 . As shown in  FIG. 16B , a first pair of plates  1622 ,  1624  may be positioned side-by-side and welded together such that first slot is formed between the plates  1622 ,  1624  of the first pair. A second pair of plates  1626   1628  may also be positioned side-by-side and welded together such that a second slot is formed between the plates  1626 ,  1628  of the second pair. Opposite sides of a fifth plate  1630  may be inserted into the respective first and second slots, and the first and second pairs of plates  1622 / 1624 ,  1626 / 1628  may be welded to the opposite sides of the fifth plate  1630 . 
       FIG. 16C  shows another alternative rotor core  1640 . As shown in  FIG. 16C , a first plate  1642  may have opposite side portions that are bent perpendicularly to a central portion of the first plate  1642 . A second plate  1644  may be formed similarly to the first plate  1642 , stacked on the first plate  1642 , and welded to the first plate  1642  such that corresponding side portions of the first and second plates  1642   1644  extend in opposite directions. A third plate  1646  may be welded to a first set of corresponding side portions of the first and second plates  1642 ,  1644 , and a fourth plate  1648  may be welded to a second set of corresponding side portions of the first and second plates  1642   1644 . 
     Any of the plates described with reference to  FIGS. 16A-16C  may include one plate or a set of two or more stacked plates. 
       FIGS. 17A-17D  show another example haptic engine  1700  (or button assembly).  FIG. 17A  shows an exploded isometric view of the haptic engine  1700 .  FIG. 17B  shows an isometric view of an inner surface of a first component  1704  of a stator  1702  of the haptic engine  1700 .  FIG. 17C  shows an assembled version of the haptic engine  1700 .  FIG. 17D  shows an assembled cross-section of the haptic engine  1700 . The haptic engine  1700  is an example of the haptic engine included in the button base  206  described with reference to  FIGS. 2A &amp; 2B , and in some cases may be a permanent magnet biased electromagnetic haptic engine (or a permanent magnet biased normal flux electromagnetic haptic engine). 
     The haptic engine  1700  may include one or more stationary portions and one or more movable portions, in addition to a constraint  1714  that is configured to constrain movement of the movable portion(s) relative to the stationary portion(s) and bias the movable portion(s) toward a rest position in which the movable portion(s) are separated from the stationary portion(s) by one or more gaps. By way of example, the stationary portion(s) may include a ferritic stator  1702  including a set of two or four components (e.g., walls)  1704 ,  1706 ,  1708 ,  1710  defining a channel, and the movable portion(s) may include a ferritic shuttle  1712  that is positioned in and movable within the channel. When the components of the haptic engine  1700  are assembled, the shuttle  1712  may be separated from a first component  1704  of the stator  1702  by a first gap  1716  (e.g., a first shuttle-to-stator gap), and from a second component  1706  of the stator  1702  by a second gap  1718  (e.g., a second shuttle-to-stator gap). The shuttle  1712  may be configured to move linearly (e.g., translate along an axis  1720  that perpendicularly intersects the first and second components  1704 ,  1706  of the stator  1702 . The constraint  1714  may constrain closure of the first and second gaps  1716 ,  1718  and bias the shuttle  1712  toward a rest position in which the shuttle  1712  is separated from the first and second components  1708 ,  1710  of the stator  1702  by the first and second gaps  1716 ,  1718 . The shuttle  1712  may be magnetically attracted to one or the other of the first and second components  1708 ,  1710  of the stator  1702 , and may contact (e.g., crash against) the stator  1702  in the absence of the constraint  1714 . 
     A button  1722  may be mechanically coupled to the haptic engine  1700 . For example, a button  1722  may be mechanically coupled to the shuttle  1712  such that movement of the shuttle  1712  may provide a haptic output to the button  1722 . In some cases, the button  1722  may be attached to the shuttle  1712  by a screw that passes through holes  1724 ,  1726 ,  1728  in the second component  1706  of the stator  1702 , the shuttle  1712 , and the first component  1704  of the stator  1702 . The screw may be received by a threaded insert in a leg  1730  (or other button attachment member) of the button  1722 , and a head of the screw may bear against a surface of the shuttle  1712 .
         In some embodiments, the constraint  1714  may include one or more flexures  1714   a . Although two flexures  1714   a  are shown in  FIG. 17A , only one flexure  1714   a  may be included in some embodiments. Each flexure  1714   a  may have shuttle attachment portions  1732   a ,  1732   b  on either side of a stator attachment portion  1734 . The stator attachment portion  1734  of each flexure may extend along one side of a pair of opposite sides, and may be spaced apart from the shuttle  1712  (e.g., by a gap  1716  or gap  1718 ). An assembly including the flexures  1714   a  and the shuttle  1712  may be combined with the stator  1702  by positioning the third and fourth components  1708 ,  1710  of the stator  1702  within the gaps  1716 ,  1718 . The third and fourth components  1708 ,  1710  may only partially fill the gaps  1716 ,  1718 , thereby leaving space for the shuttle  1712  to translate. The stator attachment portion  1734  of one flexure  1714   a  may be attached to the third component  1708  of the stator  1702 , and the stator attachment portion  1734  of the other flexure  1714   a  may be attached to the fourth component  1710  of the stator  1702 . In some embodiments, a clamp  1736  (e.g., a stiffening clamp) may be welded or otherwise attached to the stator attachment portion  1734  of a flexure  1714   a  and used to limit the flex of the flexure  1714   a  along the stator attachment portion  1734 . More generally, the flexure  1714   a  may extend in a direction transverse to a direction of linear movement of the shuttle  1712 , and may be spaced apart from a first side of the shuttle  1712  that is transverse to the direction of linear movement. The flexure  1714   a  may connect at least one side of the shuttle  1712 , other than the first side, to the stator  1702 .       

     The shuttle attachment portions  1732   a ,  1732   b  (e.g., one or more arms or extensions extending from the stator attachment portion  1734 ) of a flexure  1714   a  may be attached to opposite sides or ends of the shuttle  1712 , along an axis transverse to the axis  1720  along which the shuttle  1712  translates. In some embodiments, the shuttle attachment portions  1732   a  or  1732   b  of different flexures  1714   a , which shuttle attachment portions  1732   a  or  1732   b  are attached to a same end of the shuttle  1712 , may be mechanically coupled by a clamp  1738  (e.g., a stiffening clamp). 
     The flexure  1714   a  may constrain movement of the shuttle  1712  to translation movement along the axis  1720 , and may provide a linearly consistent stiffness opposing the translation movement. In some cases, the flexures  1714   a  may be metal flexures. Each of the flexures  1714   a  may function similarly to the flexure  314   a  described with reference to  FIG. 3 . 
     As another example, the constraint  1714  may alternatively or additionally include a set of one or more elastomers (e.g., one or more elastomeric pads, such as silicone pads) or other compliant material(s)  1714   b . The compliant material(s)  1714   b  may be disposed (positioned) between the first component  1704  of the stator  1702  and the shuttle  1712 , and/or between the second component  1706  of the stator  1702  and the shuttle  1712 . The compliant material(s)  1714   b  may constrain movement of the shuttle  1712  and bias the shuttle  1712  toward a rest position that maintains the gaps  1716  and  1718 . The compliant material(s)  1714   b  may also damp movement of the shuttle  1712 . In some cases, the compliant material(s)  1714   b  may be adhesively bonded to the component  1704  or  1706  of the stator  1702  and the shuttle  1712 . 
     In some cases, the compliant material(s)  1714   b  may be distributed in a two or three-dimensional array. 
     Each of the flexure  1714   a  and/or the compliant material(s)  1714   b  may be configured to provide a first stiffness opposing the linear movement of the shuttle  1712 , and a second stiffness opposing a force applied to the button  1722  (i.e., asymmetric first and second stiffnesses). This can enable the stiffnesses to be individually adjusted (e.g., to separately tune the force input and haptic output user experiences for the button  1722 ). 
     By way of example, and as shown in  FIGS. 17A, 17B , &amp;  17 D, the haptic engine  1700  may include one or more permanent magnets  1740  (e.g., two permanent magnets  1740 ) mounted to one or each of the first and second housing components  1704 ,  1706  of the stator  1702 , and one or more coils  1742  wound around an inward extension of one or more of the third and fourth components  1708 ,  1710  of the stator  1702 . By way of example, the permanent magnets  1740  may be disposed on first opposite sides of the shuttle  1712 , in planes parallel to the axis  1720  along which the shuttle  1712  translates. Each of the permanent magnets  1740  may be magnetized toward the shuttle  1712 , with the permanent magnets  1740  on one side of the shuttle  1712  opposing the permanent magnets  1740  on the other side of the shuttle  1712 . Also by way of example, the coils  1742  may be disposed on second opposite sides of the shuttle  1712  and wound in planes that bisect the axis  1720  along which the shuttle  1712  translates. The coils  1742  may be electrically connected in series or in parallel. A parallel connection of the coils  1742  may provide a reduction in the total resistance of the coils  1742 , and/or may enable the use of a thinner wire to achieve the same resistance as a series connection of the coils  1742 . In some alternative embodiments, permanent magnets may be positioned on two or four sides of the shuttle  1712 . In the case of four permanent magnets, the sides that include the permanent magnets would not be used for the coils. In some alternative embodiments, the coils may be combined on one side of the shuttle  1712 . The permanent magnets may be attached to the stator or the shuttle. When the coils  1742  are stimulated by an electrical signal (e.g., a current), the flux of a magnetic bias field created by the permanent magnets may be selectively increased, and the shuttle  1712  may overcome the biasing forces of the constraints  1714  and translate along the axis  1720 . The flux is “selectively” increased in that it is increased on some faces of the shuttle  1712  and decreased on opposing faces, resulting in an increased net translational force that provides or increases a force along the axis  1720  of the shuttle  1712 . In alternative embodiments of the haptic engine  1700 , one or more permanent magnets and coils may be positioned about (or on) the shuttle  1712  in other ways. 
     As also shown in  FIG. 17A , a force sensor  1744  may be at least partially attached to the haptic engine  1700  and configured to sense a force applied to the module (e.g., a force applied to a user interaction surface of the button  1722 , which force is received by the shuttle  1712 , the stator  1702 , or a housing for the haptic engine  1700 ). In some embodiments, the force sensor  1744  may include one or more strain sensors  1744   a  attached to an exterior surface of the second component  1706  of the stator  1702 , or to other surfaces of the stator  1702 . In some embodiments, the strain sensors  1744   a  may be formed on a flex circuit  1746 , and the flex circuit  1746  may be adhesively bonded or otherwise attached to a surface of the stator  1702 . Alternatively, one or more strain sensors may be attached to the flexure  1714   a  (e.g., at or near a shuttle attachment portion  1732   a ,  1732   b  or elsewhere), or to another component. When a user applies a force to the button  1722  (e.g., presses the button  1722 ), the strain sensor(s)  1744   a  may flex. Outputs of the strain sensor(s)  1744   a  may change in a manner that is related to the amount or location of the force applied to the button  1722 . In alternative embodiments, the strain sensors  1744   a  may be positioned elsewhere on the haptic engine  1700 , or on a housing of the haptic engine  1700 . In further alternative embodiments, the force sensor  1744  may additionally or alternatively include a capacitive force sensor or other type of force sensor, such as a capacitive force sensor having first and second spaced apart electrodes mounted in a gap between the first component  1704  of the stator  1702  and the shuttle  1712 , or a capacitive force sensor having first and second spaced apart electrodes mounted between the button  1722  and the first component  1704  of the stator  1702 . 
     In some embodiments, the flex circuit  1746  may include a circuit such as the circuit  1318  described with reference to  FIG. 13A . In some embodiments, the flex circuit  1746  may be electrically coupled to an off-module processor, controller, or other circuit. In some embodiments, the flex circuit  1746 , or another flex circuit that may or may not be coupled to the flex circuit  1746 , may be electrically coupled to the coils  1742 . 
     As shown in  FIGS. 17A &amp; 17C , the button  1722  may have a user interaction surface that extends parallel (or substantially parallel) to the axis  1720  along which the shuttle  1712  translates. In alternative embodiments, the button  1722  may have a user interaction surface that extends transverse to (e.g., intersects) the axis  1720  along which the shuttle  1712  translates, and the attachment member  1730  may extend through or around the flexure  1714   a  and fourth housing component  1710  of the stator  1702 . In the latter embodiments, the button  1722  may move in and out with respect to an exterior surface of a housing, instead of translating along an exterior surface of the housing. 
       FIG. 18  illustrates an example method  1800  of providing a haptic response to a user. The method  1800  may be performed by, or using, any of the modules or button assemblies described herein. The method  1800  may also be performed by, or using, other modules or button assemblies. 
     At block  1802 , the method  1800  may include constraining relative motion between a stationary portion and a movable portion of a haptic engine, to bias the movable portion toward a rest position in which the movable portion is separated from the stationary portion by a gap, and to constrain closure of the gap. The movable portion may be mechanically coupled to a button. In some embodiments, the relative motion between the stationary portion and the movable portion may be constrained to a pivot of the movable portion with respect to the stationary portion. In other embodiments, the relative motion between the stationary portion and the movable portion is constrained to translation of the movable portion along an axis. The operation(s) at block  1802  may be performed by one or more of the constrains described herein. 
     At block  1804 , the method  1800  may include determining a force applied to the button using a force sensor (e.g., a capacitive force sensor, a strain sensor, a tactile switch, and so on). The operation(s) at block  1804  may be performed by one or more of the force sensors described herein. 
     At block  1806 , the method  1800  may include determining the determined force matches a predetermined force. The operation(s) at block  1806  may be performed by one or more of the on-module or off-module circuits described herein. 
     At block  1808 , the method  1800  may include identifying a haptic actuation waveform associated with the predetermined force. In some embodiments, different haptic actuation waveforms may have different amplitudes, different frequencies, and/or different patterns. The operation(s) at block  1808  may be performed by one or more of the on-module or off-module circuits described herein. 
     At block  1810 , the method  1800  may include applying the haptic actuation waveform to the haptic engine. The operation(s) at block  1810  may be performed by one or more of the on-module or off-module circuits described herein. 
     In some embodiments of the method  1800 , the force sensor may include at least two force sensing elements positioned at different locations relative to a user interaction surface of the button, and the force may be determined using different outputs of the different force sensing elements, as described, for example, with reference to  FIGS. 13A   14 A. In some of these embodiments, the determined force may include a determined amount of force, and the predetermined force may include a predetermined amount of force. Additionally or alternatively, the determined force may include a determined force location, and the predetermined force may include a predetermined force location. 
     In some embodiments of the method  1800 , the determined force may include a determined force pattern, and the predetermined force may include a predetermined force pattern. 
     In some embodiments of the method  1800 , the relative motion between the stationary portion and the movable portion may be constrained to translation along an axis transverse to a direction of the force applied to the button. Alternatively, the relative motion may be constrained to translation along an axis parallel to the direction of the force applied to the button. 
     In some embodiments, the method  1800  may include measuring the gap, between the movable and stationary portions of the haptic engine, and controlling the gap&#39;s width in a closed loop fashion (e.g., to provide haptic output, or to maintain the gap width when no haptic output is being provided). The gap width may be measured capacitively, optically, or by other means. 
     In some embodiments, the method  1800  may not include the operations at blocks  1808  and  1810 , and may instead include the operation of taking an action associated with the predetermined force, without providing a haptic output. For example, the method  1800  may include providing an input to an application or utility running on a device, altering the output of a user interface (e.g., a display) of the device, providing an audible notification, etc. 
       FIG. 19  shows a sample electrical block diagram of an electronic device  1900 , which may be the electronic device described with reference to  FIGS. 1A-1C . The electronic device  1900  may include a display  1902  (e.g., a light-emitting display), a processor  1904 , a power source  1906 , a memory  1908  or storage device, a sensor system  1910 , and an input/output (I/O) mechanism  1912  (e.g., an input/output device and/or input/output port). The processor  1904  may control some or all of the operations of the electronic device  1900 . The processor  1904  may communicate, either directly or indirectly, with substantially all of the components of the electronic device  1900 . For example, a system bus or other communication mechanism  1914  may provide communication between the processor  1904 , the power source  1906 , the memory  1908 , the sensor system  1910 , and/or the input/output mechanism  1912 . 
     The processor  1904  may be implemented as any electronic device capable of processing, receiving, or transmitting data or instructions. For example, the processor  1904  may be a microprocessor, a central processing unit (CPU), an application-specific integrated circuit (ASIC), a digital signal processor (DSP), or combinations of such devices. As described herein, the term “processor” is meant to encompass a single processor or processing unit, multiple processors, multiple processing units, or other suitably configured computing element or elements. In some embodiments, the processor  1904  may include or be an example of the circuit  1318  described with reference to  FIG. 13A . 
     In some embodiments, the components of the electronic device  1900  may be controlled by multiple processors. For example, select components of the electronic device  1900  may be controlled by a first processor and other components of the electronic device  1900  may be controlled by a second processor, where the first and second processors may or may not be in communication with each other. 
     The power source  1906  may be implemented with any device capable of providing energy to the electronic device  1900 . For example, the power source  1906  may be one or more batteries or rechargeable batteries. Additionally or alternatively, the power source  1906  may be a power connector or power cord that connects the electronic device  1900  to another power source, such as a wall outlet. 
     The memory  1908  may store electronic data that may be used by the electronic device  1900 . For example, the memory  1908  may store electrical data or content such as, for example, audio and video files, documents and applications, device settings and user preferences, timing signals, control signals, data structures or databases, image data, or focus settings. The memory  1908  may be configured as any type of memory. By way of example only, the memory  1908  may be implemented as random access memory, read-only memory, Flash memory, removable memory, other types of storage elements, or combinations of such devices. 
     The electronic device  1900  may also include one or more sensors defining the sensor system  1910 . The sensors may be positioned substantially anywhere on the electronic device  1900 . The sensor(s) may be configured to sense substantially any type of characteristic, such as but not limited to, touch, force, pressure, light, heat, movement, relative motion, biometric data, and so on. For example, the sensor system  1910  may include a touch sensor, a force sensor, a heat sensor, a position sensor, a light or optical sensor, an accelerometer, a pressure sensor (e.g., a pressure transducer), a gyroscope, a magnetometer, a health monitoring sensor, and so on. Additionally, the one or more sensors may utilize any suitable sensing technology, including, but not limited to, capacitive, ultrasonic, resistive, optical, ultrasound, piezoelectric, and thermal sensing technology. In some embodiments, the sensor(s) may include the force sensor in any of the modules or button assemblies described herein. 
     The I/O mechanism  1912  may transmit and/or receive data from a user or another electronic device. An I/O device may include a display, a touch sensing input surface such as a track pad, one or more buttons (e.g., a graphical user interface “home” button, or one of the buttons described herein), one or more cameras, one or more microphones or speakers, one or more ports such as a microphone port, and/or a keyboard. Additionally or alternatively, an I/O device or port may transmit electronic signals via a communications network, such as a wireless and/or wired network connection. Examples of wireless and wired network connections include, but are not limited to, cellular, Wi-Fi, Bluetooth, IR, and Ethernet connections. The I/O mechanism  1912  may also provide feedback (e.g., a haptic output) to a user, and may include the haptic engine of any of the modules or button assemblies described herein. 
     The foregoing description, for purposes of explanation, uses specific nomenclature to provide a thorough understanding of the described embodiments. However, it will be apparent to one skilled in the art, after reading this description, that the specific details are not required in order to practice the described embodiments. Thus, the foregoing descriptions of the specific embodiments described herein are presented for purposes of illustration and description. They are not targeted to be exhaustive or to limit the embodiments to the precise forms disclosed. It will be apparent to one of ordinary skill in the art, after reading this description, that many modifications and variations are possible in view of the above teachings.

Metadata:
Filing Date: 20180928
Publication Date: 20200324
Grant Date: 20200324
Priority Date: 20180928
Inventors: AMIN-SHAHIDI, DARYA
LEE, ALEX M.
Assignee: APPLE INC
CPC Classifications: [{"code": "G06F3/016", "inventive": true, "first": true, "tree": "[]"}, {"code": "G06F3/046", "inventive": true, "first": false, "tree": "[]"}, {"code": "G06F3/044", "inventive": true, "first": false, "tree": "[]"}, {"code": "G06F3/016", "inventive": true, "first": true, "tree": "[]"}, {"code": "G06F3/046", "inventive": true, "first": false, "tree": "[]"}, {"code": "G06F3/016", "inventive": true, "first": true, "tree": "[]"}, {"code": "G06F3/044", "inventive": true, "first": false, "tree": "[]"}, {"code": "H03K2217/96062", "inventive": false, "first": false, "tree": "[]"}, {"code": "H03K2017/9706", "inventive": false, "first": false, "tree": "[]"}, {"code": "H03K17/9625", "inventive": true, "first": false, "tree": "[]"}]
Family ID: 69902343